From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 36/39] drm/i915: Use reservation_object to coordinate userptr get_pages() Date: Wed, 7 Aug 2019 22:49:58 +0200 Message-ID: <20190807204958.GD7444@phenom.ffwll.local> References: <20190614071023.17929-1-chris@chris-wilson.co.uk> <20190614071023.17929-37-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-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 86AE36E3F5 for ; Wed, 7 Aug 2019 20:50:03 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id s49so53015567edb.1 for ; Wed, 07 Aug 2019 13:50:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190614071023.17929-37-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdW4gMTQsIDIwMTkgYXQgMDg6MTA6MjBBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgoKTm90IHN1cmUgdGhpcyB3b3JrcywgMiB0aG91Z2h0cyB3YXkgZG93biAuLi4KCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYyAgICB8ICAyNyAr LS0KPiAgLi4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgICAz IC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2ludGVybmFsLmMgIHwgIDMw ICstLQo+ICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCAgfCAg MTEgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BhZ2VzLmMgICAgIHwg MTM3ICsrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9waHlz LmMgICAgICB8ICAzMyArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3No bWVtLmMgICAgIHwgIDMwICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f c3RvbGVuLmMgICAgfCAgMjUgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X3VzZXJwdHIuYyAgIHwgMjIxICsrKystLS0tLS0tLS0tLS0tLQo+ICAuLi4vZHJtL2k5MTUvZ2Vt L3NlbGZ0ZXN0cy9odWdlX2dlbV9vYmplY3QuYyAgfCAgMTcgKy0KPiAgLi4uL2dwdS9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyAgIHwgIDQ1ICsrLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jICAgICAgICAgICAgIHwgIDE3ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgOSArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgIDUgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwgIDE0ICstCj4gIDE1IGZpbGVz IGNoYW5nZWQsIDMwMCBpbnNlcnRpb25zKCspLCAzMjQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYwo+IGluZGV4IDg0OTkyZDU5MGRh NS4uYTQ0ZDZkMmVmN2VkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9kbWFidWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9kbWFidWYuYwo+IEBAIC0yMjUsMzMgKzIyNSwyNCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9n ZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gZHJtX2dl bV9kbWFidWZfZXhwb3J0KGRldiwgJmV4cF9pbmZvKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBp OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2RtYWJ1ZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICtzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKPiArZG1hYnVmX2dldF9wYWdlcyhz dHJ1Y3QgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19jb250ZXh0ICpjdHgsCj4gKwkJIHVuc2ln bmVkIGludCAqc2l6ZXMpCj4gIHsKPiAtCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7Cj4gLQl1bnNp Z25lZCBpbnQgc2dfcGFnZV9zaXplczsKPiAtCj4gLQlwYWdlcyA9IGRtYV9idWZfbWFwX2F0dGFj aG1lbnQob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gsCj4gLQkJCQkgICAgICAgRE1BX0JJRElSRUNU SU9OQUwpOwo+IC0JaWYgKElTX0VSUihwYWdlcykpCj4gLQkJcmV0dXJuIFBUUl9FUlIocGFnZXMp Owo+IC0KPiAtCXNnX3BhZ2Vfc2l6ZXMgPSBpOTE1X3NnX3BhZ2Vfc2l6ZXMocGFnZXMtPnNnbCk7 Cj4gLQo+IC0JX19pOTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMsIHNnX3BhZ2Vf c2l6ZXMpOwo+IC0KPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGRtYV9idWZfbWFwX2F0dGFjaG1l bnQoY3R4LT5vYmplY3QtPmJhc2UuaW1wb3J0X2F0dGFjaCwKPiArCQkJCSAgICAgIERNQV9CSURJ UkVDVElPTkFMKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9w YWdlc19kbWFidWYoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCQkgICAg IHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCj4gK3N0YXRpYyB2b2lkIGRtYWJ1Zl9wdXRfcGFnZXMo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJICAgICBzdHJ1Y3Qgc2dfdGFi bGUgKnBhZ2VzKQo+ICB7Cj4gIAlkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQob2JqLT5iYXNlLmlt cG9ydF9hdHRhY2gsIHBhZ2VzLAo+ICAJCQkJIERNQV9CSURJUkVDVElPTkFMKTsKPiAgfQo+ICAK PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9v YmplY3RfZG1hYnVmX29wcyA9IHsKPiAtCS5nZXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3RfZ2V0 X3BhZ2VzX2RtYWJ1ZiwKPiAtCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2Vz X2RtYWJ1ZiwKPiArCS5nZXRfcGFnZXMgPSBkbWFidWZfZ2V0X3BhZ2VzLAo+ICsJLnB1dF9wYWdl cyA9IGRtYWJ1Zl9wdXRfcGFnZXMsCj4gIH07Cj4gIAo+ICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Kmk5MTVfZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDQ0YmNi NjgxYzE2OC4uNjhmYWYxYTcxYzk3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTE3ODQsOSArMTc4NCw2IEBAIHN0YXRpYyBu b2lubGluZSBpbnQgZWJfcmVsb2NhdGVfc2xvdyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikK PiAgCQlnb3RvIG91dDsKPiAgCX0KPiAgCj4gLQkvKiBBIGZyZXF1ZW50IGNhdXNlIGZvciBFQUdB SU4gYXJlIGN1cnJlbnRseSB1bmF2YWlsYWJsZSBjbGllbnQgcGFnZXMgKi8KPiAtCWZsdXNoX3dv cmtxdWV1ZShlYi0+aTkxNS0+bW0udXNlcnB0cl93cSk7Cj4gLQo+ICAJZXJyID0gaTkxNV9tdXRl eF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKPiAgCWlmIChlcnIpIHsKPiAgCQltdXRleF9sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9pbnRlcm5hbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX2ludGVybmFsLmMKPiBpbmRleCAwYzQxZTA0YWI4ZmEuLmFhMGJkNWRlMzEzYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1faW50ZXJuYWwuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9pbnRlcm5hbC5jCj4gQEAgLTMy LDExICszMiwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlcm5hbF9mcmVlX3BhZ2VzKHN0cnVjdCBzZ190 YWJsZSAqc3QpCj4gIAlrZnJlZShzdCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgaTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlc19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICtzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoKPiAraW50ZXJuYWxfZ2V0X3BhZ2VzKHN0cnVj dCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2NvbnRleHQgKmN0eCwKPiArCQkgICB1bnNpZ25l ZCBpbnQgKnNpemVzKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g Y3R4LT5vYmplY3Q7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUo b2JqLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+ICAJc3RydWN0IHNjYXR0 ZXJsaXN0ICpzZzsKPiArCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gIAl1bnNpZ25lZCBpbnQgc2df cGFnZV9zaXplczsKPiAgCXVuc2lnbmVkIGludCBucGFnZXM7Cj4gIAlpbnQgbWF4X29yZGVyOwo+ IEBAIC02NiwxMiArNjksMTIgQEAgc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2Vz X2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIGNyZWF0ZV9zdDoK PiAgCXN0ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIXN0KQo+ IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAKPiAg CW5wYWdlcyA9IG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFOwo+ICAJaWYgKHNnX2FsbG9jX3Rh YmxlKHN0LCBucGFnZXMsIEdGUF9LRVJORUwpKSB7Cj4gIAkJa2ZyZWUoc3QpOwo+IC0JCXJldHVy biAtRU5PTUVNOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAJfQo+ICAKPiAgCXNn ID0gc3QtPnNnbDsKPiBAQCAtMTE3LDI3ICsxMjAsMjYgQEAgc3RhdGljIGludCBpOTE1X2dlbV9v YmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Cj4gIAkJZ290byBlcnI7Cj4gIAl9Cj4gIAo+IC0JLyogTWFyayB0aGUgcGFnZXMgYXMgZG9udG5l ZWQgd2hpbHN0IHRoZXkgYXJlIHN0aWxsIHBpbm5lZC4gQXMgc29vbgo+ICsJLyoKPiArCSAqIE1h cmsgdGhlIHBhZ2VzIGFzIGRvbnRuZWVkIHdoaWxzdCB0aGV5IGFyZSBzdGlsbCBwaW5uZWQuIEFz IHNvb24KPiAgCSAqIGFzIHRoZXkgYXJlIHVucGlubmVkIHRoZXkgYXJlIGFsbG93ZWQgdG8gYmUg cmVhcGVkIGJ5IHRoZSBzaHJpbmtlciwKPiAgCSAqIGFuZCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVk IHRvIHJlcG9wdWxhdGUgLSB0aGUgY29udGVudHMgb2YgdGhpcwo+ICAJICogb2JqZWN0IGFyZSBv bmx5IHZhbGlkIHdoaWxzdCBhY3RpdmUgYW5kIHBpbm5lZC4KPiAgCSAqLwo+ICAJb2JqLT5tbS5t YWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwo+ICAKPiAtCV9faTkxNV9nZW1fb2JqZWN0X3NldF9w YWdlcyhvYmosIHN0LCBzZ19wYWdlX3NpemVzKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiArCSpzaXpl cyA9IHNnX3BhZ2Vfc2l6ZXM7Cj4gKwlyZXR1cm4gc3Q7Cj4gIAo+ICBlcnI6Cj4gIAlzZ19zZXRf cGFnZShzZywgTlVMTCwgMCwgMCk7Cj4gIAlzZ19tYXJrX2VuZChzZyk7Cj4gIAlpbnRlcm5hbF9m cmVlX3BhZ2VzKHN0KTsKPiAtCj4gLQlyZXR1cm4gLUVOT01FTTsKPiArCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3Bh Z2VzX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkJICAg ICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpCj4gK3N0YXRpYyB2b2lkIGludGVybmFsX3B1dF9w YWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkgICAgICAgc3RydWN0 IHNnX3RhYmxlICpwYWdlcykKPiAgewo+ICAJaTkxNV9nZW1fZ3R0X2ZpbmlzaF9wYWdlcyhvYmos IHBhZ2VzKTsKPiAgCWludGVybmFsX2ZyZWVfcGFnZXMocGFnZXMpOwo+IEBAIC0xNDksOCArMTUx LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19pbnRlcm5hbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9pbnRlcm5hbF9vcHMgPSB7Cj4gIAku ZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1RfSEFTX1NUUlVDVF9QQUdFIHwKPiAgCQkgSTkxNV9HRU1f T0JKRUNUX0lTX1NIUklOS0FCTEUsCj4gLQkuZ2V0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X2dl dF9wYWdlc19pbnRlcm5hbCwKPiAtCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3Bh Z2VzX2ludGVybmFsLAo+ICsJLmdldF9wYWdlcyA9IGludGVybmFsX2dldF9wYWdlcywKPiArCS5w dXRfcGFnZXMgPSBpbnRlcm5hbF9wdXRfcGFnZXMsCj4gIH07Cj4gIAo+ICAvKioKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gaW5kZXgg Zjc5Mjk1M2I4YTcxLi4wZWE0MDRjZmJjMWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gQEAgLTE5LDYgKzE5LDcgQEAKPiAg Cj4gIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owo+ICBzdHJ1Y3QgaW50ZWxfZnJvbmJ1ZmZl cjsKPiArc3RydWN0IHRhc2tfc3RydWN0Owo+ICAKPiAgLyoKPiAgICogc3RydWN0IGk5MTVfbHV0 X2hhbmRsZSB0cmFja3MgdGhlIGZhc3QgbG9va3VwcyBmcm9tIGhhbmRsZSB0byB2bWEgdXNlZAo+ IEBAIC0zMiw2ICszMywxMSBAQCBzdHJ1Y3QgaTkxNV9sdXRfaGFuZGxlIHsKPiAgCXUzMiBoYW5k bGU7Cj4gIH07Cj4gIAo+ICtzdHJ1Y3QgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19jb250ZXh0 ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqZWN0Owo+ICsJc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrOwo+ICt9Owo+ICsKPiAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rf b3BzIHsKPiAgCXVuc2lnbmVkIGludCBmbGFnczsKPiAgI2RlZmluZSBJOTE1X0dFTV9PQkpFQ1Rf SEFTX1NUUlVDVF9QQUdFCUJJVCgwKQo+IEBAIC01Miw5ICs1OCwxMSBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdF9vcHMgewo+ICAJICogYmVpbmcgcmVsZWFzZWQgb3IgdW5kZXIgbWVtb3J5 IHByZXNzdXJlICh3aGVyZSB3ZSBhdHRlbXB0IHRvCj4gIAkgKiByZWFwIHBhZ2VzIGZvciB0aGUg c2hyaW5rZXIpLgo+ICAJICovCj4gLQlpbnQgKCpnZXRfcGFnZXMpKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOwo+ICsJc3RydWN0IHNnX3RhYmxlICooKmdldF9wYWdlcykoc3RydWN0 IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfY29udGV4dCAqY3R4LAo+ICsJCQkJICAgICAgdW5z aWduZWQgaW50ICpzaXplcyk7Cj4gIAl2b2lkICgqcHV0X3BhZ2VzKShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+ICAJCQkgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwo+ICsKPiAg CXZvaWQgKCp0cnVuY2F0ZSkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gIAl2 b2lkICgqd3JpdGViYWNrKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAgCj4g QEAgLTI1Miw3ICsyNjAsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gIAo+ICAJ CQlzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+ICAJCQlzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0 ICptbXVfb2JqZWN0Owo+IC0JCQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcms7Cj4gIAkJfSB1c2Vy cHRyOwo+ICAKPiAgCQl1bnNpZ25lZCBsb25nIHNjcmF0Y2g7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX3BhZ2VzLmMKPiBpbmRleCA2YmVjMzAxY2VlNzkuLmY2NWE5ODMyNDhj NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFnZXMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jCj4gQEAg LTgsMTYgKzgsNDkgQEAKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX29iamVjdC5oIgo+ICAjaW5jbHVk ZSAiaTkxNV9zY2F0dGVybGlzdC5oIgo+ICAKPiAtdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9zZXRf cGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSBzdHJ1Y3Qgc2df dGFibGUgKnBhZ2VzLAo+IC0JCQkJIHVuc2lnbmVkIGludCBzZ19wYWdlX3NpemVzKQo+ICtzdGF0 aWMgREVGSU5FX1NQSU5MT0NLKGZlbmNlX2xvY2spOwo+ICsKPiArc3RydWN0IGdldF9wYWdlc193 b3JrIHsKPiArCXN0cnVjdCBkbWFfZmVuY2UgZG1hOyAvKiBNdXN0IGJlIGZpcnN0IGZvciBkbWFf ZmVuY2VfZnJlZSgpICovCj4gKwlzdHJ1Y3QgaTkxNV9zd19mZW5jZSB3YWl0Owo+ICsJc3RydWN0 IHdvcmtfc3RydWN0IHdvcms7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19j b250ZXh0IGN0eDsKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBjaGFyICpnZXRfcGFnZXNfd29y a19kcml2ZXJfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuIERS SVZFUl9OQU1FOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqZ2V0X3BhZ2VzX3dvcmtf dGltZWxpbmVfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuICJh bGxvY2F0aW9uIjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2V0X3BhZ2VzX3dvcmtfcmVsZWFz ZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKPiArewo+ICsJc3RydWN0IGdldF9wYWdlc193b3Jr ICp3ID0gY29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKncpLCBkbWEpOwo+ICsKPiArCWk5MTVf c3dfZmVuY2VfZmluaSgmdy0+d2FpdCk7Cj4gKwo+ICsJQlVJTERfQlVHX09OKG9mZnNldG9mKHR5 cGVvZigqdyksIGRtYSkpOwo+ICsJZG1hX2ZlbmNlX2ZyZWUoJnctPmRtYSk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBnZXRfcGFnZXNfd29ya19vcHMgPSB7 Cj4gKwkuZ2V0X2RyaXZlcl9uYW1lID0gZ2V0X3BhZ2VzX3dvcmtfZHJpdmVyX25hbWUsCj4gKwku Z2V0X3RpbWVsaW5lX25hbWUgPSBnZXRfcGFnZXNfd29ya190aW1lbGluZV9uYW1lLAo+ICsJLnJl bGVhc2UgPSBnZXRfcGFnZXNfd29ya19yZWxlYXNlLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQg X19zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJc3RydWN0 IHNnX3RhYmxlICpwYWdlcywKPiArCQkJdW5zaWduZWQgaW50IHNnX3BhZ2Vfc2l6ZXMpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2 KTsKPiAgCXVuc2lnbmVkIGxvbmcgc3VwcG9ydGVkID0gSU5URUxfSU5GTyhpOTE1KS0+cGFnZV9z aXplczsKPiAgCWludCBpOwo+ICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9iai0+bW0ubG9j ayk7Cj4gLQo+ICAJLyogTWFrZSB0aGUgcGFnZXMgY29oZXJlbnQgd2l0aCB0aGUgR1BVIChmbHVz aGluZyBhbnkgc3dhcGluKS4gKi8KPiAgCWlmIChvYmotPmNhY2hlX2RpcnR5KSB7Cj4gIAkJb2Jq LT53cml0ZV9kb21haW4gPSAwOwo+IEBAIC0yOSw4ICs2Miw2IEBAIHZvaWQgX19pOTE1X2dlbV9v YmplY3Rfc2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAlvYmot Pm1tLmdldF9wYWdlLnNnX3BvcyA9IHBhZ2VzLT5zZ2w7Cj4gIAlvYmotPm1tLmdldF9wYWdlLnNn X2lkeCA9IDA7Cj4gIAo+IC0Jb2JqLT5tbS5wYWdlcyA9IHBhZ2VzOwo+IC0KPiAgCWlmIChpOTE1 X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSAmJgo+ICAJICAgIGk5MTUtPnF1aXJrcyAmIFFVSVJL X1BJTl9TV0laWkxFRF9QQUdFUykgewo+ICAJCUdFTV9CVUdfT04ob2JqLT5tbS5xdWlya2VkKTsK PiBAQCAtMzgsNyArNjksOCBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCW9iai0+bW0ucXVpcmtlZCA9IHRydWU7 Cj4gIAl9Cj4gIAo+IC0JR0VNX0JVR19PTighc2dfcGFnZV9zaXplcyk7Cj4gKwlpZiAoIXNnX3Bh Z2Vfc2l6ZXMpCj4gKwkJc2dfcGFnZV9zaXplcyA9IGk5MTVfc2dfcGFnZV9zaXplcyhwYWdlcy0+ c2dsKTsKPiAgCW9iai0+bW0ucGFnZV9zaXplcy5waHlzID0gc2dfcGFnZV9zaXplczsKPiAgCj4g IAkvKgo+IEBAIC03MywxOCArMTA1LDEwNSBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3NldF9w YWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAKPiAgCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZpOTE1LT5tbS5vYmpfbG9jaywgZmxhZ3MpOwo+ICAJfQo+ICt9Cj4gIAo+ ICtzdGF0aWMgdm9pZAo+ICtnZXRfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqX3dv cmspCj4gK3sKPiArCXN0cnVjdCBnZXRfcGFnZXNfd29yayAqd29yayA9IGNvbnRhaW5lcl9vZihf d29yaywgdHlwZW9mKCp3b3JrKSwgd29yayk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gd29yay0+Y3R4Lm9iamVjdDsKPiArCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7Cj4g Kwl1bnNpZ25lZCBpbnQgc2l6ZXMgPSAwOwo+ICsKPiArCWlmICghd29yay0+ZG1hLmVycm9yKSB7 Cj4gKwkJcGFnZXMgPSBvYmotPm9wcy0+Z2V0X3BhZ2VzKCZ3b3JrLT5jdHgsICZzaXplcyk7Cj4g KwkJaWYgKCFJU19FUlIocGFnZXMpKQo+ICsJCQlfX3NldF9wYWdlcyhvYmosIHBhZ2VzLCBzaXpl cyk7Cj4gKwkJZWxzZQo+ICsJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZ3b3JrLT5kbWEsIFBUUl9F UlIocGFnZXMpKTsKPiArCX0gZWxzZSB7Cj4gKwkJcGFnZXMgPSBFUlJfUFRSKHdvcmstPmRtYS5l cnJvcik7Cj4gKwl9Cj4gKwo+ICsJb2JqLT5tbS5wYWdlcyA9IHBhZ2VzOwo+ICAJY29tcGxldGVf YWxsKCZvYmotPm1tLmNvbXBsZXRpb24pOwo+ICsJYXRvbWljX2RlYygmb2JqLT5tbS5wYWdlc19w aW5fY291bnQpOwo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCXB1dF90YXNr X3N0cnVjdCh3b3JrLT5jdHgudGFzayk7Cj4gKwo+ICsJZG1hX2ZlbmNlX3NpZ25hbCgmd29yay0+ ZG1hKTsKPiArCWRtYV9mZW5jZV9wdXQoJndvcmstPmRtYSk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgX19pOTE1X3N3X2ZlbmNlX2NhbGwKPiArZ2V0X3BhZ2VzX25vdGlmeShzdHJ1Y3QgaTkxNV9z d19mZW5jZSAqZmVuY2UsIGVudW0gaTkxNV9zd19mZW5jZV9ub3RpZnkgc3RhdGUpCj4gK3sKPiAr CXN0cnVjdCBnZXRfcGFnZXNfd29yayAqdyA9IGNvbnRhaW5lcl9vZihmZW5jZSwgdHlwZW9mKCp3 KSwgd2FpdCk7Cj4gKwo+ICsJc3dpdGNoIChzdGF0ZSkgewo+ICsJY2FzZSBGRU5DRV9DT01QTEVU RToKPiArCQlpZiAoZmVuY2UtPmVycm9yKQo+ICsJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZ3LT5k bWEsIGZlbmNlLT5lcnJvcik7Cj4gKwkJcXVldWVfd29yayhzeXN0ZW1fdW5ib3VuZF93cSwgJnct PndvcmspOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgRkVOQ0VfRlJFRToKPiArCQlkbWFfZmVu Y2VfcHV0KCZ3LT5kbWEpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCXJldHVybiBOT1RJRllf RE9ORTsKPiAgfQo+ICAKPiAgaW50IF9fX19pOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiArCXN0cnVjdCBnZXRfcGFnZXNfd29y ayAqd29yazsKPiArCWludCBlcnI7Cj4gKwo+ICAJaWYgKHVubGlrZWx5KG9iai0+bW0ubWFkdiAh PSBJOTE1X01BRFZfV0lMTE5FRUQpKSB7Cj4gIAkJRFJNX0RFQlVHKCJBdHRlbXB0aW5nIHRvIG9i dGFpbiBhIHB1cmdlYWJsZSBvYmplY3RcbiIpOwo+ICAJCXJldHVybiAtRUZBVUxUOwo+ICAJfQo+ ICAKPiAtCXJldHVybiBvYmotPm9wcy0+Z2V0X3BhZ2VzKG9iaik7Cj4gKwkvKiBYWFggaW5saW5l PyAqLwo+ICsKPiArCXdvcmsgPSBrbWFsbG9jKHNpemVvZigqd29yayksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCF3b3JrKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWRtYV9mZW5jZV9pbml0 KCZ3b3JrLT5kbWEsCj4gKwkJICAgICAgICZnZXRfcGFnZXNfd29ya19vcHMsCj4gKwkJICAgICAg ICZmZW5jZV9sb2NrLAo+ICsJCSAgICAgICB0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5tbS51bm9y ZGVyZWRfdGltZWxpbmUsCj4gKwkJICAgICAgIDApOwoKV2l0aCBhbGwgdGhlIHNocmlua2VycyAo YWNyb3NzIHRoZSB0cmVlLCBub3QganVzdCBpOTE1KSB3ZSBoYXZlIHRoYXQganVzdApibGluZGx5 IGFzc3VtZSB5b3UgY2FuIHdhaXQgZm9yIGEgZmVuY2UgKGF0IGxlYXN0IGlmIHlvdSBtYW5hZ2Ug dG8gYWNxdWlyZQp0aGUgcmVzZXJ2YXRpb25fbG9jaykgSSBleHBlY3QgdGhpcyB0byBkZWFkbG9j ay4gSSB0aGluayB0aGUgcnVsZSBpcyB0aGF0Cm5vIHB1Ymxpc2hlZCBmZW5jZSBjYW4gZGVwZW5k IG9uIGFueSBtZW1vcnkgYWxsb2NhdGlvbiBhbnl3aGVyZS4KClllcyBpdCBzdWNrcyByZWFsIGhh cmQuCgo+ICsJaTkxNV9zd19mZW5jZV9pbml0KCZ3b3JrLT53YWl0LCBnZXRfcGFnZXNfbm90aWZ5 KTsKPiArCj4gKwl3b3JrLT5jdHgub2JqZWN0ID0gaTkxNV9nZW1fb2JqZWN0X2dldChvYmopOwo+ ICsKPiArCXdvcmstPmN0eC50YXNrID0gY3VycmVudDsKPiArCWdldF90YXNrX3N0cnVjdCh3b3Jr LT5jdHgudGFzayk7Cj4gKwo+ICsJSU5JVF9XT1JLKCZ3b3JrLT53b3JrLCBnZXRfcGFnZXNfd29y a2VyKTsKPiArCj4gKwlpOTE1X2dlbV9vYmplY3RfbG9jayhvYmopOwoKT3RoZXIgYml0IGlzIG5l c3RpbmcgcmVzZXJ2YXRpb25fb2JqZWN0IGxvY2sgd2l0aGluIG9iai0+bW0ubG9jay4KCm9iai0+ bW0ubG9jayBpcyBhIHZlcnkgbmVhdCZ0aWR5IGFuc3dlciB0byBkZWFsaW5nIHdpdGggYm8gYWxs b2MgdnMuCnNocmlua2VyIG1hZG5lc3MuIEJ1dCBsb29raW5nIGF0IHdoZXJlIGRtYS1idWYgaXMg aGVhZGVkIHdlJ2xsIG5lZWQgdG8KaGF2ZSB0aGUgcmVzZXJ2YXRpb25fb2JqZWN0IG5lc3Qgb3V0 c2lkZSBvZiB0aGUgb2JqLT5tbS5sb2NrIChiZWNhdXNlIHRoZQppbXBvcnRlciBpcyBnb2luZyB0 byBhY3F1aXJlIHRoYXQgZm9yIHVzLCBiZWZvcmUgY2FsbGluZyBkb3duIGludG8KZXhwb3J0ZXIg Y29kZSkuCgpPZiBjb3Vyc2Ugb24gdGhlIGltcG9ydGVyIHNpZGUgd2UncmUgY3VycmVudGx5IG5l c3RpbmcgdGhlIG90aGVyIHdheQpyb3VuZCwgYW5kIENocmlzdGlhbiBLw7ZuaWcgYWxyZWFkeSBz ZXQgQ0kgb24gZmlyZSBmaWd1cmluZyB0aGF0IG91dC4KCkkgdGhpbmsgd2hhdCBjb3VsZCB3b3Jr IGlzIHB1bGxpbmcgdGhlIHJlc2VydmF0aW9uX29iamVjdCBvdXQgb2YKb2JqLT5tbS5sb2NrLCBh bmQgZW50aXJlbHkgYnlwYXNzaW5nIGl0IGZvciBpbXBvcnRlZCBkbWEtYnVmIChzaW5jZSBmb3IK dGhhdCBjYXNlIGRlYWxpbmcgd2l0aCBzaHJpbmtlciBsb2x6IGlzbid0IG91ciBwcm9ibGVtLCBi dXQgdGhlIGV4cG9ydGVycywKc28gd2UgZG9uJ3QgbmVlZCB0aGUgc3BlY2lhbCBzaHJpbmtlciBs b2NrKS4KCjNyZCBwYXJ0IGlzIGp1c3QgaXJyYXRpb25hbCBtZSBmcmVha2luZyBvdXQgd2hlbiB3 ZSBoaWRlIHVzZXJwdHIgYmVoaW5kIGEKd2FpdF9jb21wbGV0aW9uLCB0aGF0IGRpZG4ndCB3b3Jr IG91dCB3ZWxsIGxhc3QgdGltZSBhcm91bmQgYmVjYXVzZQpsb2NrZGVwIGZhaWxzIHVzLiBCdXQg dGhhdCdzIHJlYWxseSBqdXN0IGFuIGFzaWRlLgotRGFuaWVsCgo+ICsJR0VNX0JVR19PTighcmVz ZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSkpOwo+ICsJ ZXJyID0gaTkxNV9zd19mZW5jZV9hd2FpdF9yZXNlcnZhdGlvbigmd29yay0+d2FpdCwKPiArCQkJ CQkgICAgICBvYmotPnJlc3YsIE5VTEwsCj4gKwkJCQkJICAgICAgdHJ1ZSwgSTkxNV9GRU5DRV9U SU1FT1VULAo+ICsJCQkJCSAgICAgIEk5MTVfRkVOQ0VfR0ZQKTsKPiArCWlmIChlcnIgPT0gMCkg ewo+ICsJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5jZShvYmotPnJlc3YsICZ3b3Jr LT5kbWEpOwo+ICsJCWF0b21pY19pbmMoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50KTsKPiArCX0g ZWxzZSB7Cj4gKwkJZG1hX2ZlbmNlX3NldF9lcnJvcigmd29yay0+ZG1hLCBlcnIpOwo+ICsJfQo+ ICsJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOwo+ICsKPiArCWRtYV9mZW5jZV9nZXQoJndv cmstPmRtYSk7Cj4gKwlpOTE1X3N3X2ZlbmNlX2NvbW1pdCgmd29yay0+d2FpdCk7Cj4gKwo+ICsJ cmV0dXJuIGVycjsKPiAgfQo+ICAKPiAgLyogRW5zdXJlIHRoYXQgdGhlIGFzc29jaWF0ZWQgcGFn ZXMgYXJlIGdhdGhlcmVkIGZyb20gdGhlIGJhY2tpbmcgc3RvcmFnZQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3BoeXMuYwo+IGluZGV4IDJkZWFjOTMzY2Y1OS4uNmI0YTVmYjUy MDU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9waHlz LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGh5cy5jCj4gQEAg LTE3LDE4ICsxNywyMSBAQAo+ICAjaW5jbHVkZSAiaTkxNV9nZW1fb2JqZWN0LmgiCj4gICNpbmNs dWRlICJpOTE1X3NjYXR0ZXJsaXN0LmgiCj4gIAo+IC1zdGF0aWMgaW50IGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICtzdGF0 aWMgc3RydWN0IHNnX3RhYmxlICoKPiArcGh5c19nZXRfcGFnZXMoc3RydWN0IGk5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXNfY29udGV4dCAqY3R4LAo+ICsJICAgICAgIHVuc2lnbmVkIGludCAqc2l6 ZXMpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBjdHgtPm9iamVj dDsKPiAgCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gb2JqLT5iYXNlLmZpbHAtPmZf bWFwcGluZzsKPiAgCXN0cnVjdCBkcm1fZG1hX2hhbmRsZSAqcGh5czsKPiAtCXN0cnVjdCBzZ190 YWJsZSAqc3Q7Cj4gIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwo+ICsJc3RydWN0IHNnX3RhYmxl ICpzdDsKPiAgCWNoYXIgKnZhZGRyOwo+ICAJaW50IGk7Cj4gIAlpbnQgZXJyOwo+ICAKPiAgCWlm IChXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9uZWVkc19iaXQxN19zd2l6emxlKG9iaikpKQo+IC0J CXJldHVybiAtRUlOVkFMOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICAKPiAgCS8q IEFsd2F5cyBhbGlnbmluZyB0byB0aGUgb2JqZWN0IHNpemUsIGFsbG93cyBhIHNpbmdsZSBhbGxv Y2F0aW9uCj4gIAkgKiB0byBoYW5kbGUgYWxsIHBvc3NpYmxlIGNhbGxlcnMsIGFuZCBnaXZlbiB0 eXBpY2FsIG9iamVjdCBzaXplcywKPiBAQCAtMzgsNyArNDEsNyBAQCBzdGF0aWMgaW50IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICAJCQkgICAgIHJvdW5kdXBfcG93X29mX3R3byhvYmotPmJhc2Uuc2l6ZSksCj4gIAkJCSAg ICAgcm91bmR1cF9wb3dfb2ZfdHdvKG9iai0+YmFzZS5zaXplKSk7Cj4gIAlpZiAoIXBoeXMpCj4g LQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+ICAJ dmFkZHIgPSBwaHlzLT52YWRkcjsKPiAgCWZvciAoaSA9IDA7IGkgPCBvYmotPmJhc2Uuc2l6ZSAv IFBBR0VfU0laRTsgaSsrKSB7Cj4gQEAgLTgzLDE5ICs4NiwxNiBAQCBzdGF0aWMgaW50IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXNfcGh5cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICAKPiAgCW9iai0+cGh5c19oYW5kbGUgPSBwaHlzOwo+ICAKPiAtCV9faTkxNV9nZW1fb2Jq ZWN0X3NldF9wYWdlcyhvYmosIHN0LCBzZy0+bGVuZ3RoKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAr CSpzaXplcyA9IHNnLT5sZW5ndGg7Cj4gKwlyZXR1cm4gc3Q7Cj4gIAo+ICBlcnJfcGh5czoKPiAg CWRybV9wY2lfZnJlZShvYmotPmJhc2UuZGV2LCBwaHlzKTsKPiAtCj4gLQlyZXR1cm4gZXJyOwo+ ICsJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtaTkxNV9n ZW1fb2JqZWN0X3B1dF9wYWdlc19waHlzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gLQkJCSAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQo+ICtwaHlzX3B1dF9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQo+ ICB7Cj4gIAlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3NobWVtKG9iaiwgcGFnZXMsIGZhbHNl KTsKPiAgCj4gQEAgLTEzOSw4ICsxMzksOCBAQCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9waHlz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIH0KPiAgCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fcGh5c19vcHMgPSB7Cj4g LQkuZ2V0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19waHlzLAo+IC0JLnB1dF9w YWdlcyA9IGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfcGh5cywKPiArCS5nZXRfcGFnZXMgPSBw aHlzX2dldF9wYWdlcywKPiArCS5wdXRfcGFnZXMgPSBwaHlzX3B1dF9wYWdlcywKPiAgCS5yZWxl YXNlID0gaTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfcGh5cywKPiAgfTsKPiAgCj4gQEAgLTE5Mywx NSArMTkzLDEyIEBAIGludCBpOTE1X2dlbV9vYmplY3RfYXR0YWNoX3BoeXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IGFsaWduKQo+ICAJaWYgKCFJU19FUlJfT1JfTlVMTChw YWdlcykpCj4gIAkJaTkxNV9nZW1fc2htZW1fb3BzLnB1dF9wYWdlcyhvYmosIHBhZ2VzKTsKPiAg CW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKPiArCj4gKwl3YWl0X2Zvcl9jb21wbGV0aW9u KCZvYmotPm1tLmNvbXBsZXRpb24pOwo+ICAJcmV0dXJuIDA7Cj4gIAo+ICBlcnJfeGZlcjoKPiAg CW9iai0+b3BzID0gJmk5MTVfZ2VtX3NobWVtX29wczsKPiAtCWlmICghSVNfRVJSX09SX05VTEwo cGFnZXMpKSB7Cj4gLQkJdW5zaWduZWQgaW50IHNnX3BhZ2Vfc2l6ZXMgPSBpOTE1X3NnX3BhZ2Vf c2l6ZXMocGFnZXMtPnNnbCk7Cj4gLQo+IC0JCV9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhv YmosIHBhZ2VzLCBzZ19wYWdlX3NpemVzKTsKPiAtCX0KPiAgZXJyX3VubG9jazoKPiAgCW11dGV4 X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKPiAgCXJldHVybiBlcnI7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3NobWVtLmMKPiBpbmRleCAxOWQ5ZWNkYjI4OTQuLmM0MzMwNGUz YmFkYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fc2ht ZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zaG1lbS5jCj4g QEAgLTIyLDExICsyMiwxMyBAQCBzdGF0aWMgdm9pZCBjaGVja19yZWxlYXNlX3BhZ2V2ZWMoc3Ry dWN0IHBhZ2V2ZWMgKnB2ZWMpCj4gIAljb25kX3Jlc2NoZWQoKTsKPiAgfQo+ICAKPiAtc3RhdGlj IGludCBzaG1lbV9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAr c3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCj4gK3NobWVtX2dldF9wYWdlcyhzdHJ1Y3QgaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlc19jb250ZXh0ICpjdHgsCj4gKwkJdW5zaWduZWQgaW50ICpzaXpl cykKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGN0eC0+b2JqZWN0 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5k ZXYpOwo+ICAJY29uc3QgdW5zaWduZWQgbG9uZyBwYWdlX2NvdW50ID0gb2JqLT5iYXNlLnNpemUg LyBQQUdFX1NJWkU7Cj4gLQl1bnNpZ25lZCBsb25nIGk7Cj4gIAlzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqbWFwcGluZzsKPiAgCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gIAlzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNnOwo+IEBAIC0zNywzMSArMzksMjQgQEAgc3RhdGljIGludCBzaG1lbV9nZXRfcGFnZXMo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgCXVuc2lnbmVkIGludCBzZ19wYWdl X3NpemVzOwo+ICAJc3RydWN0IHBhZ2V2ZWMgcHZlYzsKPiAgCWdmcF90IG5vcmVjbGFpbTsKPiAr CXVuc2lnbmVkIGxvbmcgaTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JLyoKPiAtCSAqIEFzc2VydCB0 aGF0IHRoZSBvYmplY3QgaXMgbm90IGN1cnJlbnRseSBpbiBhbnkgR1BVIGRvbWFpbi4gQXMgaXQK PiAtCSAqIHdhc24ndCBpbiB0aGUgR1RULCB0aGVyZSBzaG91bGRuJ3QgYmUgYW55IHdheSBpdCBj b3VsZCBoYXZlIGJlZW4gaW4KPiAtCSAqIGEgR1BVIGNhY2hlCj4gLQkgKi8KPiAtCUdFTV9CVUdf T04ob2JqLT5yZWFkX2RvbWFpbnMgJiBJOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4gLQlHRU1fQlVH X09OKG9iai0+d3JpdGVfZG9tYWluICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+IC0KPiAgCS8q Cj4gIAkgKiBJZiB0aGVyZSdzIG5vIGNoYW5jZSBvZiBhbGxvY2F0aW5nIGVub3VnaCBwYWdlcyBm b3IgdGhlIHdob2xlCj4gIAkgKiBvYmplY3QsIGJhaWwgZWFybHkuCj4gIAkgKi8KPiAgCWlmIChw YWdlX2NvdW50ID4gdG90YWxyYW1fcGFnZXMoKSkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCQly ZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gIAlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCks IEdGUF9LRVJORUwpOwo+ICAJaWYgKCFzdCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gIHJlYnVpbGRfc3Q6Cj4gIAlpZiAoc2dfYWxsb2Nf dGFibGUoc3QsIHBhZ2VfY291bnQsIEdGUF9LRVJORUwpKSB7Cj4gIAkJa2ZyZWUoc3QpOwo+IC0J CXJldHVybiAtRU5PTUVNOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAJfQo+ICAK PiAgCS8qCj4gQEAgLTE3OSw5ICsxNzQsOCBAQCBzdGF0aWMgaW50IHNobWVtX2dldF9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJaWYgKGk5MTVfZ2VtX29iamVjdF9u ZWVkc19iaXQxN19zd2l6emxlKG9iaikpCj4gIAkJaTkxNV9nZW1fb2JqZWN0X2RvX2JpdF8xN19z d2l6emxlKG9iaiwgc3QpOwo+ICAKPiAtCV9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhvYmos IHN0LCBzZ19wYWdlX3NpemVzKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiArCSpzaXplcyA9IHNnX3Bh Z2Vfc2l6ZXM7Cj4gKwlyZXR1cm4gc3Q7Cj4gIAo+ICBlcnJfc2c6Cj4gIAlzZ19tYXJrX2VuZChz Zyk7Cj4gQEAgLTIwOSw3ICsyMDMsNyBAQCBzdGF0aWMgaW50IHNobWVtX2dldF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJaWYgKHJldCA9PSAtRU5PU1BDKQo+ICAJ CXJldCA9IC1FTk9NRU07Cj4gIAo+IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiBFUlJfUFRSKHJl dCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAgLTI3Niw4ICsyNzAsNiBAQCBfX2k5MTVf Z2VtX29iamVjdF9yZWxlYXNlX3NobWVtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIAkJCQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+ICAJCQkJYm9vbCBuZWVkc19jbGZsdXNo KQo+ICB7Cj4gLQlHRU1fQlVHX09OKG9iai0+bW0ubWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQp Owo+IC0KPiAgCWlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEKQo+ICAJCW9i ai0+bW0uZGlydHkgPSBmYWxzZTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9zdG9sZW4uYwo+IGluZGV4IDcwNjYwNDRkNjNjZi4uMjhlYTA2ZTY2N2NkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9zdG9sZW4uYwo+IEBAIC00OTksMjIg KzQ5OSwxOSBAQCBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAlyZXR1cm4gc3Q7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgaTkxNV9nZW1fb2Jq ZWN0X2dldF9wYWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAr c3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCj4gK3N0b2xlbl9nZXRfcGFnZXMoc3RydWN0IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXNfY29udGV4dCAqY3R4LAo+ICsJCSB1bnNpZ25lZCBpbnQgKnNp emVzKQo+ICB7Cj4gLQlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzID0KPiAtCQlpOTE1X3BhZ2VzX2Ny ZWF0ZV9mb3Jfc3RvbGVuKG9iai0+YmFzZS5kZXYsCj4gLQkJCQkJICAgICBvYmotPnN0b2xlbi0+ c3RhcnQsCj4gLQkJCQkJICAgICBvYmotPnN0b2xlbi0+c2l6ZSk7Cj4gLQlpZiAoSVNfRVJSKHBh Z2VzKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihwYWdlcyk7Cj4gLQo+IC0JX19pOTE1X2dlbV9vYmpl Y3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMsIG9iai0+c3RvbGVuLT5zaXplKTsKPiArCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBjdHgtPm9iamVjdDsKPiAgCj4gLQlyZXR1cm4gMDsK PiArCXJldHVybiBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKG9iai0+YmFzZS5kZXYsCj4g KwkJCQkJICAgIG9iai0+c3RvbGVuLT5zdGFydCwKPiArCQkJCQkgICAgb2JqLT5zdG9sZW4tPnNp emUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3N0 b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJCSAgICAgc3RydWN0 IHNnX3RhYmxlICpwYWdlcykKPiArc3RhdGljIHZvaWQKPiArc3RvbGVuX3B1dF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQo+ICB7 Cj4gIAkvKiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBpOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9zdG9sZW4oKSAqLwo+ICAJc2dfZnJlZV90YWJsZShwYWdlcyk7Cj4gQEAgLTUzNiw4ICs1MzMs OCBAQCBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiAgfQo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfc3RvbGVuX29wcyA9IHsKPiAtCS5nZXRfcGFnZXMg PSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX3N0b2xlbiwKPiAtCS5wdXRfcGFnZXMgPSBpOTE1 X2dlbV9vYmplY3RfcHV0X3BhZ2VzX3N0b2xlbiwKPiArCS5nZXRfcGFnZXMgPSBzdG9sZW5fZ2V0 X3BhZ2VzLAo+ICsJLnB1dF9wYWdlcyA9IHN0b2xlbl9wdXRfcGFnZXMsCj4gIAkucmVsZWFzZSA9 IGk5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbiwKPiAgfTsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCj4gaW5kZXggZjA5M2RlYWViNWMwLi42 NzQ4ZTE1YmY4OWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3VzZXJwdHIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91 c2VycHRyLmMKPiBAQCAtMzc4LDcgKzM3OCw3IEBAIF9faTkxNV9tbV9zdHJ1Y3RfZnJlZShzdHJ1 Y3Qga3JlZiAqa3JlZikKPiAgCW11dGV4X3VubG9jaygmbW0tPmk5MTUtPm1tX2xvY2spOwo+ICAK PiAgCUlOSVRfV09SSygmbW0tPndvcmssIF9faTkxNV9tbV9zdHJ1Y3RfZnJlZV9fd29ya2VyKTsK PiAtCXF1ZXVlX3dvcmsobW0tPmk5MTUtPm1tLnVzZXJwdHJfd3EsICZtbS0+d29yayk7Cj4gKwlz Y2hlZHVsZV93b3JrKCZtbS0+d29yayk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAgLTM5 MywxOSArMzkzLDEyIEBAIGk5MTVfZ2VtX3VzZXJwdHJfcmVsZWFzZV9fbW1fc3RydWN0KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAlvYmotPnVzZXJwdHIubW0gPSBOVUxMOwo+ ICB9Cj4gIAo+IC1zdHJ1Y3QgZ2V0X3BhZ2VzX3dvcmsgewo+IC0Jc3RydWN0IHdvcmtfc3RydWN0 IHdvcms7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+IC0Jc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrOwo+IC19Owo+IC0KPiAgc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCj4g IF9faTkxNV9nZW1fdXNlcnB0cl9hbGxvY19wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAJCQkgICAgICAgc3RydWN0IHBhZ2UgKipwdmVjLCBpbnQgbnVtX3BhZ2VzKQo+ ICB7Cj4gIAl1bnNpZ25lZCBpbnQgbWF4X3NlZ21lbnQgPSBpOTE1X3NnX3NlZ21lbnRfc2l6ZSgp Owo+ICAJc3RydWN0IHNnX3RhYmxlICpzdDsKPiAtCXVuc2lnbmVkIGludCBzZ19wYWdlX3NpemVz Owo+ICAJaW50IHJldDsKPiAgCj4gIAlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJO RUwpOwo+IEBAIC00MzUsMTMxICs0MjgsMjMgQEAgX19pOTE1X2dlbV91c2VycHRyX2FsbG9jX3Bh Z2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiAgCX0KPiAgCj4gLQlzZ19wYWdlX3NpemVzID0gaTkxNV9zZ19wYWdlX3NpemVzKHN0 LT5zZ2wpOwo+IC0KPiAtCV9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhvYmosIHN0LCBzZ19w YWdlX3NpemVzKTsKPiAtCj4gIAlyZXR1cm4gc3Q7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkCj4g LV9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAq X3dvcmspCj4gLXsKPiAtCXN0cnVjdCBnZXRfcGFnZXNfd29yayAqd29yayA9IGNvbnRhaW5lcl9v Zihfd29yaywgdHlwZW9mKCp3b3JrKSwgd29yayk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqID0gd29yay0+b2JqOwo+IC0JY29uc3QgaW50IG5wYWdlcyA9IG9iai0+YmFzZS5z aXplID4+IFBBR0VfU0hJRlQ7Cj4gLQlzdHJ1Y3QgcGFnZSAqKnB2ZWM7Cj4gLQlpbnQgcGlubmVk LCByZXQ7Cj4gLQo+IC0JcmV0ID0gLUVOT01FTTsKPiAtCXBpbm5lZCA9IDA7Cj4gLQo+IC0JcHZl YyA9IGt2bWFsbG9jX2FycmF5KG5wYWdlcywgc2l6ZW9mKHN0cnVjdCBwYWdlICopLCBHRlBfS0VS TkVMKTsKPiAtCWlmIChwdmVjICE9IE5VTEwpIHsKPiAtCQlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9 IG9iai0+dXNlcnB0ci5tbS0+bW07Cj4gLQkJdW5zaWduZWQgaW50IGZsYWdzID0gMDsKPiAtCj4g LQkJaWYgKCFpOTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkob2JqKSkKPiAtCQkJZmxhZ3MgfD0g Rk9MTF9XUklURTsKPiAtCj4gLQkJcmV0ID0gLUVGQVVMVDsKPiAtCQlpZiAobW1nZXRfbm90X3pl cm8obW0pKSB7Cj4gLQkJCWRvd25fcmVhZCgmbW0tPm1tYXBfc2VtKTsKPiAtCQkJd2hpbGUgKHBp bm5lZCA8IG5wYWdlcykgewo+IC0JCQkJcmV0ID0gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlCj4gLQkJ CQkJKHdvcmstPnRhc2ssIG1tLAo+IC0JCQkJCSBvYmotPnVzZXJwdHIucHRyICsgcGlubmVkICog UEFHRV9TSVpFLAo+IC0JCQkJCSBucGFnZXMgLSBwaW5uZWQsCj4gLQkJCQkJIGZsYWdzLAo+IC0J CQkJCSBwdmVjICsgcGlubmVkLCBOVUxMLCBOVUxMKTsKPiAtCQkJCWlmIChyZXQgPCAwKQo+IC0J CQkJCWJyZWFrOwo+IC0KPiAtCQkJCXBpbm5lZCArPSByZXQ7Cj4gLQkJCX0KPiAtCQkJdXBfcmVh ZCgmbW0tPm1tYXBfc2VtKTsKPiAtCQkJbW1wdXQobW0pOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQlt dXRleF9sb2NrKCZvYmotPm1tLmxvY2spOwo+IC0JaWYgKG9iai0+dXNlcnB0ci53b3JrID09ICZ3 b3JrLT53b3JrKSB7Cj4gLQkJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IEVSUl9QVFIocmV0KTsK PiAtCj4gLQkJaWYgKHBpbm5lZCA9PSBucGFnZXMpIHsKPiAtCQkJcGFnZXMgPSBfX2k5MTVfZ2Vt X3VzZXJwdHJfYWxsb2NfcGFnZXMob2JqLCBwdmVjLAo+IC0JCQkJCQkJICAgICAgIG5wYWdlcyk7 Cj4gLQkJCWlmICghSVNfRVJSKHBhZ2VzKSkgewo+IC0JCQkJcGlubmVkID0gMDsKPiAtCQkJCXBh Z2VzID0gTlVMTDsKPiAtCQkJfQo+IC0JCX0KPiAtCj4gLQkJb2JqLT51c2VycHRyLndvcmsgPSBF UlJfQ0FTVChwYWdlcyk7Cj4gLQkJaWYgKElTX0VSUihwYWdlcykpCj4gLQkJCV9faTkxNV9nZW1f dXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgZmFsc2UpOwo+IC0JfQo+IC0JbXV0ZXhfdW5sb2NrKCZv YmotPm1tLmxvY2spOwo+IC0KPiAtCXJlbGVhc2VfcGFnZXMocHZlYywgcGlubmVkKTsKPiAtCWt2 ZnJlZShwdmVjKTsKPiAtCj4gLQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gLQlwdXRfdGFz a19zdHJ1Y3Qod29yay0+dGFzayk7Cj4gLQlrZnJlZSh3b3JrKTsKPiAtfQo+IC0KPiAgc3RhdGlj IHN0cnVjdCBzZ190YWJsZSAqCj4gLV9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfc2NoZWR1 bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAtewo+IC0Jc3RydWN0IGdldF9w YWdlc193b3JrICp3b3JrOwo+IC0KPiAtCS8qIFNwYXduIGEgd29ya2VyIHNvIHRoYXQgd2UgY2Fu IGFjcXVpcmUgdGhlCj4gLQkgKiB1c2VyIHBhZ2VzIHdpdGhvdXQgaG9sZGluZyBvdXIgbXV0ZXgu IEFjY2Vzcwo+IC0JICogdG8gdGhlIHVzZXIgcGFnZXMgcmVxdWlyZXMgbW1hcF9zZW0sIGFuZCB3 ZSBoYXZlCj4gLQkgKiBhIHN0cmljdCBsb2NrIG9yZGVyaW5nIG9mIG1tYXBfc2VtLCBzdHJ1Y3Rf bXV0ZXggLQo+IC0JICogd2UgYWxyZWFkeSBob2xkIHN0cnVjdF9tdXRleCBoZXJlIGFuZCBzbyBj YW5ub3QKPiAtCSAqIGNhbGwgZ3VwIHdpdGhvdXQgZW5jb3VudGVyaW5nIGEgbG9jayBpbnZlcnNp b24uCj4gLQkgKgo+IC0JICogVXNlcnNwYWNlIHdpbGwga2VlcCBvbiByZXBlYXRpbmcgdGhlIG9w ZXJhdGlvbgo+IC0JICogKHRoYW5rcyB0byBFQUdBSU4pIHVudGlsIGVpdGhlciB3ZSBoaXQgdGhl IGZhc3QKPiAtCSAqIHBhdGggb3IgdGhlIHdvcmtlciBjb21wbGV0ZXMuIElmIHRoZSB3b3JrZXIg aXMKPiAtCSAqIGNhbmNlbGxlZCBvciBzdXBlcnNlZGVkLCB0aGUgdGFzayBpcyBzdGlsbCBydW4K PiAtCSAqIGJ1dCB0aGUgcmVzdWx0cyBpZ25vcmVkLiAoVGhpcyBsZWFkcyB0bwo+IC0JICogY29t cGxpY2F0aW9ucyB0aGF0IHdlIG1heSBoYXZlIGEgc3RyYXkgb2JqZWN0Cj4gLQkgKiByZWZjb3Vu dCB0aGF0IHdlIG5lZWQgdG8gYmUgd2FyeSBvZiB3aGVuCj4gLQkgKiBjaGVja2luZyBmb3IgZXhp c3Rpbmcgb2JqZWN0cyBkdXJpbmcgY3JlYXRpb24uKQo+IC0JICogSWYgdGhlIHdvcmtlciBlbmNv dW50ZXJzIGFuIGVycm9yLCBpdCByZXBvcnRzCj4gLQkgKiB0aGF0IGVycm9yIGJhY2sgdG8gdGhp cyBmdW5jdGlvbiB0aHJvdWdoCj4gLQkgKiBvYmotPnVzZXJwdHIud29yayA9IEVSUl9QVFIuCj4g LQkgKi8KPiAtCXdvcmsgPSBrbWFsbG9jKHNpemVvZigqd29yayksIEdGUF9LRVJORUwpOwo+IC0J aWYgKHdvcmsgPT0gTlVMTCkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAtCj4gLQlv YmotPnVzZXJwdHIud29yayA9ICZ3b3JrLT53b3JrOwo+IC0KPiAtCXdvcmstPm9iaiA9IGk5MTVf Z2VtX29iamVjdF9nZXQob2JqKTsKPiAtCj4gLQl3b3JrLT50YXNrID0gY3VycmVudDsKPiAtCWdl dF90YXNrX3N0cnVjdCh3b3JrLT50YXNrKTsKPiAtCj4gLQlJTklUX1dPUksoJndvcmstPndvcmss IF9faTkxNV9nZW1fdXNlcnB0cl9nZXRfcGFnZXNfd29ya2VyKTsKPiAtCXF1ZXVlX3dvcmsodG9f aTkxNShvYmotPmJhc2UuZGV2KS0+bW0udXNlcnB0cl93cSwgJndvcmstPndvcmspOwo+IC0KPiAt CXJldHVybiBFUlJfUFRSKC1FQUdBSU4pOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGk5MTVfZ2Vt X3VzZXJwdHJfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3Vz ZXJwdHJfZ2V0X3BhZ2VzKHN0cnVjdCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2NvbnRleHQg KmN0eCwKPiArCQkgIHVuc2lnbmVkIGludCAqc2l6ZXMpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBjdHgtPm9iamVjdDsKPiAgCWNvbnN0IGludCBudW1fcGFnZXMg PSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICAJc3RydWN0IG1tX3N0cnVjdCAqbW0g PSBvYmotPnVzZXJwdHIubW0tPm1tOwo+IC0Jc3RydWN0IHBhZ2UgKipwdmVjOwo+ICAJc3RydWN0 IHNnX3RhYmxlICpwYWdlczsKPiAtCWJvb2wgYWN0aXZlOwo+ICsJc3RydWN0IHBhZ2UgKipwdmVj Owo+ICAJaW50IHBpbm5lZDsKPiArCWludCByZXQ7Cj4gIAo+IC0JLyogSWYgdXNlcnNwYWNlIHNo b3VsZCBlbmdpbmVlciB0aGF0IHRoZXNlIHBhZ2VzIGFyZSByZXBsYWNlZCBpbgo+ICsJLyoKPiAr CSAqIElmIHVzZXJzcGFjZSBzaG91bGQgZW5naW5lZXIgdGhhdCB0aGVzZSBwYWdlcyBhcmUgcmVw bGFjZWQgaW4KPiAgCSAqIHRoZSB2bWEgYmV0d2VlbiB1cyBiaW5kaW5nIHRoaXMgcGFnZSBpbnRv IHRoZSBHVFQgYW5kIGNvbXBsZXRpb24KPiAgCSAqIG9mIHJlbmRlcmluZy4uLiBUaGVpciBsb3Nz LiBJZiB0aGV5IGNoYW5nZSB0aGUgbWFwcGluZyBvZiB0aGVpcgo+ICAJICogcGFnZXMgdGhleSBu ZWVkIHRvIGNyZWF0ZSBhIG5ldyBibyB0byBwb2ludCB0byB0aGUgbmV3IHZtYS4KPiBAQCAtNTc2 LDU5ICs0NjEsNTggQEAgc3RhdGljIGludCBpOTE1X2dlbV91c2VycHRyX2dldF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJICogZWdyZWdpb3VzIGNhc2VzIGZyb20g Y2F1c2luZyBoYXJtLgo+ICAJICovCj4gIAo+IC0JaWYgKG9iai0+dXNlcnB0ci53b3JrKSB7Cj4g LQkJLyogYWN0aXZlIGZsYWcgc2hvdWxkIHN0aWxsIGJlIGhlbGQgZm9yIHRoZSBwZW5kaW5nIHdv cmsgKi8KPiAtCQlpZiAoSVNfRVJSKG9iai0+dXNlcnB0ci53b3JrKSkKPiAtCQkJcmV0dXJuIFBU Ul9FUlIob2JqLT51c2VycHRyLndvcmspOwo+IC0JCWVsc2UKPiAtCQkJcmV0dXJuIC1FQUdBSU47 Cj4gLQl9Cj4gKwlwdmVjID0ga3ZtYWxsb2NfYXJyYXkobnVtX3BhZ2VzLCBzaXplb2Yoc3RydWN0 IHBhZ2UgKiksCj4gKwkJCSAgICAgIEdGUF9LRVJORUwgfCBfX0dGUF9OT1JFVFJZIHwgX19HRlBf Tk9XQVJOKTsKPiArCWlmICghcHZlYykKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAr Cj4gKwlfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShvYmosIHRydWUpOwo+ICAKPiAtCXB2 ZWMgPSBOVUxMOwo+ICAJcGlubmVkID0gMDsKPiArCXJldCA9IC1FRkFVTFQ7Cj4gKwlpZiAobW1n ZXRfbm90X3plcm8obW0pKSB7Cj4gKwkJdW5zaWduZWQgaW50IGZsYWdzOwo+ICAKPiAtCWlmICht bSA9PSBjdXJyZW50LT5tbSkgewo+IC0JCXB2ZWMgPSBrdm1hbGxvY19hcnJheShudW1fcGFnZXMs IHNpemVvZihzdHJ1Y3QgcGFnZSAqKSwKPiAtCQkJCSAgICAgIEdGUF9LRVJORUwgfAo+IC0JCQkJ ICAgICAgX19HRlBfTk9SRVRSWSB8Cj4gLQkJCQkgICAgICBfX0dGUF9OT1dBUk4pOwo+IC0JCWlm IChwdmVjKSAvKiBkZWZlciB0byB3b3JrZXIgaWYgbWFsbG9jIGZhaWxzICovCj4gLQkJCXBpbm5l ZCA9IF9fZ2V0X3VzZXJfcGFnZXNfZmFzdChvYmotPnVzZXJwdHIucHRyLAo+IC0JCQkJCQkgICAg ICAgbnVtX3BhZ2VzLAo+IC0JCQkJCQkgICAgICAgIWk5MTVfZ2VtX29iamVjdF9pc19yZWFkb25s eShvYmopLAo+IC0JCQkJCQkgICAgICAgcHZlYyk7Cj4gLQl9Cj4gKwkJZmxhZ3MgPSAwOwo+ICsJ CWlmICghaTkxNV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KG9iaikpCj4gKwkJCWZsYWdzIHw9IEZP TExfV1JJVEU7Cj4gIAo+IC0JYWN0aXZlID0gZmFsc2U7Cj4gLQlpZiAocGlubmVkIDwgMCkgewo+ IC0JCXBhZ2VzID0gRVJSX1BUUihwaW5uZWQpOwo+IC0JCXBpbm5lZCA9IDA7Cj4gLQl9IGVsc2Ug aWYgKHBpbm5lZCA8IG51bV9wYWdlcykgewo+IC0JCXBhZ2VzID0gX19pOTE1X2dlbV91c2VycHRy X2dldF9wYWdlc19zY2hlZHVsZShvYmopOwo+IC0JCWFjdGl2ZSA9IHBhZ2VzID09IEVSUl9QVFIo LUVBR0FJTik7Cj4gLQl9IGVsc2Ugewo+IC0JCXBhZ2VzID0gX19pOTE1X2dlbV91c2VycHRyX2Fs bG9jX3BhZ2VzKG9iaiwgcHZlYywgbnVtX3BhZ2VzKTsKPiAtCQlhY3RpdmUgPSAhSVNfRVJSKHBh Z2VzKTsKPiArCQlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7Cj4gKwkJd2hpbGUgKHBpbm5lZCA8 IG51bV9wYWdlcykgewo+ICsJCQlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUKPiArCQkJCShj dHgtPnRhc2ssIG1tLAo+ICsJCQkJIG9iai0+dXNlcnB0ci5wdHIgKyBwaW5uZWQgKiBQQUdFX1NJ WkUsCj4gKwkJCQkgbnVtX3BhZ2VzIC0gcGlubmVkLAo+ICsJCQkJIGZsYWdzLAo+ICsJCQkJIHB2 ZWMgKyBwaW5uZWQsIE5VTEwsIE5VTEwpOwo+ICsJCQlpZiAocmV0IDwgMCkKPiArCQkJCWJyZWFr Owo+ICsKPiArCQkJcGlubmVkICs9IHJldDsKPiArCQl9Cj4gKwkJdXBfcmVhZCgmbW0tPm1tYXBf c2VtKTsKPiArCQltbXB1dChtbSk7Cj4gIAl9Cj4gLQlpZiAoYWN0aXZlKQo+IC0JCV9faTkxNV9n ZW1fdXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgdHJ1ZSk7Cj4gIAo+IC0JaWYgKElTX0VSUihwYWdl cykpCj4gKwlpZiAocmV0KQo+ICsJCXBhZ2VzID0gRVJSX1BUUihyZXQpOwo+ICsJZWxzZQo+ICsJ CXBhZ2VzID0gX19pOTE1X2dlbV91c2VycHRyX2FsbG9jX3BhZ2VzKG9iaiwgcHZlYywgbnVtX3Bh Z2VzKTsKPiArCWlmIChJU19FUlIocGFnZXMpKSB7Cj4gIAkJcmVsZWFzZV9wYWdlcyhwdmVjLCBw aW5uZWQpOwo+ICsJCV9faTkxNV9nZW1fdXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgZmFsc2UpOwo+ ICsJfQo+ICAJa3ZmcmVlKHB2ZWMpOwo+ICAKPiAtCXJldHVybiBQVFJfRVJSX09SX1pFUk8ocGFn ZXMpOwo+ICsJcmV0dXJuIHBhZ2VzOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1pOTE1X2dl bV91c2VycHRyX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0J CQkgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQo+ICt1c2VycHRyX3B1dF9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKQo+ICB7Cj4g IAlzdHJ1Y3Qgc2d0X2l0ZXIgc2d0X2l0ZXI7Cj4gIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiAgCj4g LQkvKiBDYW5jZWwgYW55IGluZmxpZ2h0IHdvcmsgYW5kIGZvcmNlIHRoZW0gdG8gcmVzdGFydCB0 aGVpciBndXAgKi8KPiAtCW9iai0+dXNlcnB0ci53b3JrID0gTlVMTDsKPiAgCV9faTkxNV9nZW1f dXNlcnB0cl9zZXRfYWN0aXZlKG9iaiwgZmFsc2UpOwo+ICAJaWYgKCFwYWdlcykKPiAgCQlyZXR1 cm47Cj4gQEAgLTY2OSw4ICs1NTMsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Rfb3BzIGk5MTVfZ2VtX3VzZXJwdHJfb3BzID0gewo+ICAJLmZsYWdzID0gSTkxNV9H RU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRSB8Cj4gIAkJIEk5MTVfR0VNX09CSkVDVF9JU19TSFJJ TktBQkxFIHwKPiAgCQkgSTkxNV9HRU1fT0JKRUNUX0FTWU5DX0NBTkNFTCwKPiAtCS5nZXRfcGFn ZXMgPSBpOTE1X2dlbV91c2VycHRyX2dldF9wYWdlcywKPiAtCS5wdXRfcGFnZXMgPSBpOTE1X2dl bV91c2VycHRyX3B1dF9wYWdlcywKPiArCS5nZXRfcGFnZXMgPSB1c2VycHRyX2dldF9wYWdlcywK PiArCS5wdXRfcGFnZXMgPSB1c2VycHRyX3B1dF9wYWdlcywKPiAgCS5kbWFidWZfZXhwb3J0ID0g aTkxNV9nZW1fdXNlcnB0cl9kbWFidWZfZXhwb3J0LAo+ICAJLnJlbGVhc2UgPSBpOTE1X2dlbV91 c2VycHRyX3JlbGVhc2UsCj4gIH07Cj4gQEAgLTc4NiwyMiArNjcwLDEzIEBAIGk5MTVfZ2VtX3Vz ZXJwdHJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXJldHVybiAwOwo+ICB9Cj4g IAo+IC1pbnQgaTkxNV9nZW1faW5pdF91c2VycHRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArdm9pZCBpOTE1X2dlbV9pbml0X3VzZXJwdHIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+bW1fbG9jayk7 Cj4gIAloYXNoX2luaXQoZGV2X3ByaXYtPm1tX3N0cnVjdHMpOwo+IC0KPiAtCWRldl9wcml2LT5t bS51c2VycHRyX3dxID0KPiAtCQlhbGxvY193b3JrcXVldWUoImk5MTUtdXNlcnB0ci1hY3F1aXJl IiwKPiAtCQkJCVdRX0hJR0hQUkkgfCBXUV9VTkJPVU5ELAo+IC0JCQkJMCk7Cj4gLQlpZiAoIWRl dl9wcml2LT5tbS51c2VycHRyX3dxKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+IC0KPiAtCXJldHVy biAwOwo+ICB9Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfdXNlcnB0cihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWRlc3Ryb3lfd29ya3F1ZXVlKGRldl9w cml2LT5tbS51c2VycHRyX3dxKTsKPiArCW11dGV4X2Rlc3Ryb3koJmRldl9wcml2LT5tbV9sb2Nr KTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2h1Z2VfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9o dWdlX2dlbV9vYmplY3QuYwo+IGluZGV4IDNjNWQxN2IyYjY3MC4uMDJlNmVkY2U3MTVlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9nZW1fb2Jq ZWN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfZ2Vt X29iamVjdC5jCj4gQEAgLTIxLDkgKzIxLDEyIEBAIHN0YXRpYyB2b2lkIGh1Z2VfZnJlZV9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJa2ZyZWUocGFnZXMpOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgaW50IGh1Z2VfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCj4gK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKgo+ICtodWdlX2dldF9wYWdlcyhz dHJ1Y3QgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19jb250ZXh0ICpjdHgsCj4gKwkgICAgICAg dW5zaWduZWQgaW50ICpzaXplcykKPiAgewo+ICAjZGVmaW5lIEdGUCAoR0ZQX0tFUk5FTCB8IF9f R0ZQX05PV0FSTiB8IF9fR0ZQX05PUkVUUlkpCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gY3R4LT5vYmplY3Q7Cj4gIAljb25zdCB1bnNpZ25lZCBsb25nIG5yZWFsID0gb2Jq LT5zY3JhdGNoIC8gUEFHRV9TSVpFOwo+ICAJY29uc3QgdW5zaWduZWQgbG9uZyBucGFnZXMgPSBv YmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0laRTsKPiAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2csICpz cmMsICplbmQ7Cj4gQEAgLTMyLDExICszNSwxMSBAQCBzdGF0aWMgaW50IGh1Z2VfZ2V0X3BhZ2Vz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAo+ICAJcGFnZXMgPSBrbWFsbG9j KHNpemVvZigqcGFnZXMpLCBHRlApOwo+ICAJaWYgKCFwYWdlcykKPiAtCQlyZXR1cm4gLUVOT01F TTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gIAlpZiAoc2dfYWxsb2NfdGFi bGUocGFnZXMsIG5wYWdlcywgR0ZQKSkgewo+ICAJCWtmcmVlKHBhZ2VzKTsKPiAtCQlyZXR1cm4g LUVOT01FTTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCX0KPiAgCj4gIAlzZyA9 IHBhZ2VzLT5zZ2w7Cj4gQEAgLTY0LDE0ICs2NywxMiBAQCBzdGF0aWMgaW50IGh1Z2VfZ2V0X3Bh Z2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAlpZiAoaTkxNV9nZW1fZ3R0 X3ByZXBhcmVfcGFnZXMob2JqLCBwYWdlcykpCj4gIAkJZ290byBlcnI7Cj4gIAo+IC0JX19pOTE1 X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMsIFBBR0VfU0laRSk7Cj4gLQo+IC0JcmV0 dXJuIDA7Cj4gKwkqc2l6ZXMgPSBQQUdFX1NJWkU7Cj4gKwlyZXR1cm4gcGFnZXM7Cj4gIAo+ICBl cnI6Cj4gIAlodWdlX2ZyZWVfcGFnZXMob2JqLCBwYWdlcyk7Cj4gLQo+IC0JcmV0dXJuIC1FTk9N RU07Cj4gKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgI3VuZGVmIEdGUAo+ICB9Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFn ZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4g aW5kZXggYjAzYTI5MzY2YmQxLi4zYjkzYTczMzdmMjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IEBAIC01MSw5ICs1MSwxMiBA QCBzdGF0aWMgdm9pZCBodWdlX3BhZ2VzX2ZyZWVfcGFnZXMoc3RydWN0IHNnX3RhYmxlICpzdCkK PiAgCWtmcmVlKHN0KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBnZXRfaHVnZV9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICtzdGF0aWMgc3RydWN0IHNnX3RhYmxlICoK PiArZ2V0X2h1Z2VfcGFnZXMoc3RydWN0IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfY29udGV4 dCAqY3R4LAo+ICsJICAgICAgIHVuc2lnbmVkIGludCAqc2l6ZXMpCj4gIHsKPiAgI2RlZmluZSBH RlAgKEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9OT1JFVFJZKQo+ICsJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGN0eC0+b2JqZWN0Owo+ICAJdW5zaWduZWQgaW50 IHBhZ2VfbWFzayA9IG9iai0+bW0ucGFnZV9tYXNrOwo+ICAJc3RydWN0IHNnX3RhYmxlICpzdDsK PiAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4gQEAgLTYyLDExICs2NSwxMSBAQCBzdGF0aWMg aW50IGdldF9odWdlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAo+ ICAJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlApOwo+ICAJaWYgKCFzdCkKPiAtCQlyZXR1 cm4gLUVOT01FTTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gIAlpZiAoc2df YWxsb2NfdGFibGUoc3QsIG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQsIEdGUCkpIHsKPiAg CQlrZnJlZShzdCk7Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7Cj4gIAl9Cj4gIAo+ICAJcmVtID0gb2JqLT5iYXNlLnNpemU7Cj4gQEAgLTExNCwxNiAr MTE3LDE0IEBAIHN0YXRpYyBpbnQgZ2V0X2h1Z2VfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiAgCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKPiAgCj4g IAlHRU1fQlVHX09OKHNnX3BhZ2Vfc2l6ZXMgIT0gb2JqLT5tbS5wYWdlX21hc2spOwo+IC0JX19p OTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgc3QsIHNnX3BhZ2Vfc2l6ZXMpOwo+IC0KPiAt CXJldHVybiAwOwo+ICsJKnNpemVzID0gc2dfcGFnZV9zaXplczsKPiArCXJldHVybiBzdDsKPiAg Cj4gIGVycjoKPiAgCXNnX3NldF9wYWdlKHNnLCBOVUxMLCAwLCAwKTsKPiAgCXNnX21hcmtfZW5k KHNnKTsKPiAgCWh1Z2VfcGFnZXNfZnJlZV9wYWdlcyhzdCk7Cj4gLQo+IC0JcmV0dXJuIC1FTk9N RU07Cj4gKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQg cHV0X2h1Z2VfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiBAQCAtMTc1 LDggKzE3NiwxMSBAQCBodWdlX3BhZ2VzX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiAgCXJldHVybiBvYmo7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgZmFrZV9nZXRfaHVn ZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICtzdGF0aWMgc3RydWN0 IHNnX3RhYmxlICoKPiArZmFrZV9nZXRfaHVnZV9wYWdlcyhzdHJ1Y3QgaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlc19jb250ZXh0ICpjdHgsCj4gKwkJICAgIHVuc2lnbmVkIGludCAqc2l6ZXMpCj4g IHsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBjdHgtPm9iamVjdDsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsK PiAgCWNvbnN0IHU2NCBtYXhfbGVuID0gcm91bmRkb3duX3Bvd19vZl90d28oVUlOVF9NQVgpOwo+ ICAJc3RydWN0IHNnX3RhYmxlICpzdDsKPiBAQCAtMTg2LDExICsxOTAsMTEgQEAgc3RhdGljIGlu dCBmYWtlX2dldF9odWdlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g IAo+ICAJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlApOwo+ICAJaWYgKCFzdCkKPiAtCQly ZXR1cm4gLUVOT01FTTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gIAlpZiAo c2dfYWxsb2NfdGFibGUoc3QsIG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQsIEdGUCkpIHsK PiAgCQlrZnJlZShzdCk7Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7Cj4gIAl9Cj4gIAo+ICAJLyogVXNlIG9wdGltYWwgcGFnZSBzaXplZCBjaHVua3Mg dG8gZmlsbCBpbiB0aGUgc2cgdGFibGUgKi8KPiBAQCAtMjI3LDEzICsyMzEsMTUgQEAgc3RhdGlj IGludCBmYWtlX2dldF9odWdlX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Cj4gIAo+ICAJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwo+ICAKPiAtCV9faTkx NV9nZW1fb2JqZWN0X3NldF9wYWdlcyhvYmosIHN0LCBzZ19wYWdlX3NpemVzKTsKPiAtCj4gLQly ZXR1cm4gMDsKPiArCSpzaXplcyA9IHNnX3BhZ2Vfc2l6ZXM7Cj4gKwlyZXR1cm4gc3Q7Cj4gIH0K PiAgCj4gLXN0YXRpYyBpbnQgZmFrZV9nZXRfaHVnZV9wYWdlc19zaW5nbGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiArc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCj4gK2Zha2Vf Z2V0X2h1Z2VfcGFnZXNfc2luZ2xlKHN0cnVjdCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2Nv bnRleHQgKmN0eCwKPiArCQkJICAgdW5zaWduZWQgaW50ICpzaXplcykKPiAgewo+ICsJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGN0eC0+b2JqZWN0Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IHNn X3RhYmxlICpzdDsKPiAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4gQEAgLTI0MSwxMSArMjQ3 LDExIEBAIHN0YXRpYyBpbnQgZmFrZV9nZXRfaHVnZV9wYWdlc19zaW5nbGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiAgCj4gIAlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdG UCk7Cj4gIAlpZiAoIXN0KQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+ICAKPiAgCWlmIChzZ19hbGxvY190YWJsZShzdCwgMSwgR0ZQKSkgewo+ICAJ CWtmcmVlKHN0KTsKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKPiAgCX0KPiAgCj4gIAlzZyA9IHN0LT5zZ2w7Cj4gQEAgLTI2MSw5ICsyNjcsOCBAQCBz dGF0aWMgaW50IGZha2VfZ2V0X2h1Z2VfcGFnZXNfc2luZ2xlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCj4gIAo+ICAJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwo+ ICAKPiAtCV9faTkxNV9nZW1fb2JqZWN0X3NldF9wYWdlcyhvYmosIHN0LCBzZy0+bGVuZ3RoKTsK PiAtCj4gLQlyZXR1cm4gMDsKPiArCSpzaXplcyA9IHNnLT5sZW5ndGg7Cj4gKwlyZXR1cm4gc3Q7 Cj4gICN1bmRlZiBHRlAKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jCj4gaW5k ZXggNDFjOGViYzYwYzYzLi5jMmE4MTkzOWY2OTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2Rt YWJ1Zi5jCj4gQEAgLTM2LDkgKzM2LDExIEBACj4gIAo+ICAjZGVmaW5lIEdFTjhfREVDT0RFX1BU RShwdGUpIChwdGUgJiBHRU5NQVNLX1VMTCg2MywgMTIpKQo+ICAKPiAtc3RhdGljIGludCB2Z3B1 X2dlbV9nZXRfcGFnZXMoCj4gLQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAr c3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCj4gK3ZncHVfZ2VtX2dldF9wYWdlcyhzdHJ1Y3QgaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlc19jb250ZXh0ICpjdHgsCj4gKwkJICAgdW5zaWduZWQgaW50 ICpzaXplcykKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGN0eC0+ b2JqZWN0Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShv YmotPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gIAlzdHJ1Y3Qgc2NhdHRl cmxpc3QgKnNnOwo+IEBAIC00OSwxNyArNTEsMTcgQEAgc3RhdGljIGludCB2Z3B1X2dlbV9nZXRf cGFnZXMoCj4gIAo+ICAJZmJfaW5mbyA9IChzdHJ1Y3QgaW50ZWxfdmdwdV9mYl9pbmZvICopb2Jq LT5ndnRfaW5mbzsKPiAgCWlmIChXQVJOX09OKCFmYl9pbmZvKSkKPiAtCQlyZXR1cm4gLUVOT0RF VjsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPiAgCj4gIAlzdCA9IGttYWxsb2Moc2l6 ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ICAJaWYgKHVubGlrZWx5KCFzdCkpCj4gLQkJcmV0dXJu IC1FTk9NRU07Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+ICAJcGFnZV9udW0g PSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICAJcmV0ID0gc2dfYWxsb2NfdGFibGUo c3QsIHBhZ2VfbnVtLCBHRlBfS0VSTkVMKTsKPiAgCWlmIChyZXQpIHsKPiAgCQlrZnJlZShzdCk7 Cj4gLQkJcmV0dXJuIHJldDsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAJfQo+ICAJZ3R0 X2VudHJpZXMgPSAoZ2VuOF9wdGVfdCBfX2lvbWVtICopZGV2X3ByaXYtPmdndHQuZ3NtICsKPiAg CQkoZmJfaW5mby0+c3RhcnQgPj4gUEFHRV9TSElGVCk7Cj4gQEAgLTcxLDkgKzczLDggQEAgc3Rh dGljIGludCB2Z3B1X2dlbV9nZXRfcGFnZXMoCj4gIAkJc2dfZG1hX2xlbihzZykgPSBQQUdFX1NJ WkU7Cj4gIAl9Cj4gIAo+IC0JX19pOTE1X2dlbV9vYmplY3Rfc2V0X3BhZ2VzKG9iaiwgc3QsIFBB R0VfU0laRSk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwkqc2l6ZXMgPSBQQUdFX1NJWkU7Cj4gKwly ZXR1cm4gc3Q7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHZncHVfZ2VtX3B1dF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGlu ZGV4IDlhMWVjNDg3ZThiMS4uZWY5ZTRjYjQ5YjRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTc4NiwxMyArNzg2LDYgQEAgc3RydWN0IGk5MTVfZ2VtX21tIHsKPiAgCXN0cnVj dCBub3RpZmllcl9ibG9jayB2bWFwX25vdGlmaWVyOwo+ICAJc3RydWN0IHNocmlua2VyIHNocmlu a2VyOwo+ICAKPiAtCS8qKgo+IC0JICogV29ya3F1ZXVlIHRvIGZhdWx0IGluIHVzZXJwdHIgcGFn ZXMsIGZsdXNoZWQgYnkgdGhlIGV4ZWNidWYKPiAtCSAqIHdoZW4gcmVxdWlyZWQgYnV0IG90aGVy d2lzZSBsZWZ0IHRvIHVzZXJzcGFjZSB0byB0cnkgYWdhaW4KPiAtCSAqIG9uIEVBR0FJTi4KPiAt CSAqLwo+IC0Jc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVzZXJwdHJfd3E7Cj4gLQo+ICAJdTY0 IHVub3JkZXJlZF90aW1lbGluZTsKPiAgCj4gIAkvKiB0aGUgaW5kaWNhdG9yIGZvciBkaXNwYXRj aCB2aWRlbyBjb21tYW5kcyBvbiB0d28gQlNEIHJpbmdzICovCj4gQEAgLTI1MTQsNyArMjUwNyw3 IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF92Z3B1X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIH0KPiAgCj4gIC8qIGk5MTVfZ2VtLmMgKi8KPiAtaW50IGk5 MTVfZ2VtX2luaXRfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ ICt2b2lkIGk5MTVfZ2VtX2luaXRfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KTsKPiAgaW50IGk5MTVfZ2VtX2luaXRfZWFybHkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRl eCAyMTQxNmI4NzkwNWUuLjE1NzFjNzA3YWQxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IEBAIC0xNTQ0LDEwICsxNTQ0LDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZGV2X3ByaXYtPm1tLnVub3JkZXJlZF90aW1lbGlu ZSA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+ICAKPiAgCWk5MTVfdGltZWxpbmVzX2lu aXQoZGV2X3ByaXYpOwo+IC0KPiAtCXJldCA9IGk5MTVfZ2VtX2luaXRfdXNlcnB0cihkZXZfcHJp dik7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gKwlpOTE1X2dlbV9pbml0X3VzZXJw dHIoZGV2X3ByaXYpOwo+ICAKPiAgCXJldCA9IGludGVsX3VjX2luaXRfbWlzYyhkZXZfcHJpdik7 Cj4gIAlpZiAocmV0KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fZ3R0LmMKPiBpbmRleCA2NjRiN2UzZTFkN2MuLmRhZTFmODYzNGEzOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtNTQsMTAg KzU0LDEzIEBAIHN0YXRpYyB2b2lkIGZha2VfZnJlZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+ICAJa2ZyZWUocGFnZXMpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGZh a2VfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3N0YXRpYyBz dHJ1Y3Qgc2dfdGFibGUgKgo+ICtmYWtlX2dldF9wYWdlcyhzdHJ1Y3QgaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlc19jb250ZXh0ICpjdHgsCj4gKwkgICAgICAgdW5zaWduZWQgaW50ICpzaXplcykK PiAgewo+ICAjZGVmaW5lIEdGUCAoR0ZQX0tFUk5FTCB8IF9fR0ZQX05PV0FSTiB8IF9fR0ZQX05P UkVUUlkpCj4gICNkZWZpbmUgUEZOX0JJQVMgMHgxMDAwCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gY3R4LT5vYmplY3Q7Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwo+ ICAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiAgCXVuc2lnbmVkIGludCBzZ19wYWdlX3NpemVz Owo+IEBAIC02NSwxMiArNjgsMTIgQEAgc3RhdGljIGludCBmYWtlX2dldF9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAKPiAgCXBhZ2VzID0ga21hbGxvYyhzaXplb2Yo KnBhZ2VzKSwgR0ZQKTsKPiAgCWlmICghcGFnZXMpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJ cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+ICAJcmVtID0gcm91bmRfdXAob2JqLT5iYXNl LnNpemUsIEJJVCgzMSkpID4+IDMxOwo+ICAJaWYgKHNnX2FsbG9jX3RhYmxlKHBhZ2VzLCByZW0s IEdGUCkpIHsKPiAgCQlrZnJlZShwYWdlcyk7Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAl9Cj4gIAo+ICAJc2dfcGFnZV9zaXplcyA9IDA7Cj4g QEAgLTkwLDkgKzkzLDggQEAgc3RhdGljIGludCBmYWtlX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAKPiAgCW9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9ET05U TkVFRDsKPiAgCj4gLQlfX2k5MTVfZ2VtX29iamVjdF9zZXRfcGFnZXMob2JqLCBwYWdlcywgc2df cGFnZV9zaXplcyk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwkqc2l6ZXMgPSBzZ19wYWdlX3NpemVz Owo+ICsJcmV0dXJuIHBhZ2VzOwo+ICAjdW5kZWYgR0ZQCj4gIH0KPiAgCj4gLS0gCj4gMi4yMC4x Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4