From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915/userptr: Avoid struct_mutex recursion for mmu_invalidate_range_start Date: Fri, 26 Oct 2018 11:02:57 +0200 Message-ID: References: <20181025124542.21830-1-chris@chris-wilson.co.uk> <20181025191650.GF21967@phenom.ffwll.local> <154049637049.5942.12617641226168472462@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by gabe.freedesktop.org (Postfix) with ESMTPS id AEC4E6E428 for ; Fri, 26 Oct 2018 09:03:10 +0000 (UTC) Received: by mail-qt1-x841.google.com with SMTP id g10-v6so398432qtq.6 for ; Fri, 26 Oct 2018 02:03:10 -0700 (PDT) In-Reply-To: <154049637049.5942.12617641226168472462@skylake-alporthouse-com> 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 List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMjUsIDIwMTggYXQgOTozOSBQTSBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4gd3JvdGU6Cj4KPiBRdW90aW5nIERhbmllbCBWZXR0ZXIgKDIwMTgtMTAt MjUgMjA6MTY6NTApCj4gPiBPbiBUaHUsIE9jdCAyNSwgMjAxOCBhdCAwMTo0NTo0MlBNICswMTAw LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiA+IFNpbmNlIGNvbW1pdCA5MzA2NWFjNzUzZTQgKCJt bSwgb29tOiBkaXN0aW5ndWlzaCBibG9ja2FibGUgbW9kZSBmb3IgbW11Cj4gPiA+IG5vdGlmaWVy cyIpIHdlIGhhdmUgYmVlbiBhYmxlIHRvIHJlcG9ydCBmYWlsdXJlIGZyb20KPiA+ID4gbW11X2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQgd2hpY2ggYWxsb3dzIHVzIHRvIHVzZSBhIHRyeWxvY2sgb24g dGhlCj4gPiA+IHN0cnVjdF9tdXRleCB0byBhdm9pZCBwb3RlbnRpYWwgcmVjdXJzaW9uIGFuZCBy ZXBvcnQgLUVCVVNZIGluc3RlYWQuCj4gPiA+IEZ1cnRoZXJtb3JlLCB0aGlzIGFsbG93cyB1cyB0 byBwdWxsIHRoZSB3b3JrIGludG8gdGhlIG1haW4gY2FsbGJhY2sgYW5kCj4gPiA+IGF2b2lkIHRo ZSBzbGVpZ2h0LW9mLWhhbmQgaW4gdXNpbmcgYSB3b3JrcXVldWUgdG8gYXZvaWQgbG9ja2RlcC4K PiA+ID4KPiA+ID4gSG93ZXZlciwgbm90IGFsbCBwYXRocyB0byBtbXVfaW52YWxpZGF0ZV9yYW5n ZV9zdGFydCBhcmUgcHJlcGFyZWQgdG8KPiA+ID4gaGFuZGxlIGZhaWx1cmUsIHNvIGluc3RlYWQg b2YgcmVwb3J0aW5nIHRoZSByZWN1cnNpb24sIGRlYWwgd2l0aCBpdC4KPiA+ID4KPiA+ID4gQnVn emlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM3 NQo+ID4gPiBSZWZlcmVuY2VzOiA5MzA2NWFjNzUzZTQgKCJtbSwgb29tOiBkaXN0aW5ndWlzaCBi bG9ja2FibGUgbW9kZSBmb3IgbW11IG5vdGlmaWVycyIpCj4gPiA+IFNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ID4gPiAtLS0KPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgNCArLQo+ID4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgIDEyICstCj4gPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgfCAyMTkgKysrKysrKysrKysrLS0t LS0tLS0tLS0tCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAxMjAg ZGVsZXRpb25zKC0pCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBpbmRl eCAyZDc3NjFiOGFjMDcuLmMzYjk0YzNmOTMwZiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gPiA+IEBAIC0zMDc2LDggKzMwNzYsOCBAQCBlbnVtIGk5MTVfbW1fc3ViY2xh c3MgeyAvKiBsb2NrZGVwIHN1YmNsYXNzIGZvciBvYmotPm1tLmxvY2sgKi8KPiA+ID4gICAgICAg STkxNV9NTV9TSFJJTktFUgo+ID4gPiAgfTsKPiA+ID4KPiA+ID4gLXZvaWQgX19pOTE1X2dlbV9v YmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGk5MTVfbW1fc3ViY2xhc3Mgc3ViY2xh c3MpOwo+ID4gPiAraW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIGk5MTVfbW1fc3ViY2xhc3Mgc3ViY2xhc3MpOwo+ID4gPiAgdm9pZCBfX2k5MTVfZ2VtX29i amVjdF9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ID4gPgo+ ID4gPiAgZW51bSBpOTE1X21hcF90eXBlIHsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g PiA+IGluZGV4IDkzZDA5MjgyNzEwZC4uZGU3Y2NiM2ViN2I4IDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gQEAgLTI0NTQsMTcgKzI0NTQsMTggQEAgX19pOTE1X2dl bV9vYmplY3RfdW5zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+ ID4gICAgICAgcmV0dXJuIHBhZ2VzOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAtdm9pZCBfX2k5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaTkxNV9tbV9zdWJjbGFzcyBz dWJjbGFzcykKPiA+ID4gK2ludCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW51bSBpOTE1X21tX3N1YmNsYXNzIHN1YmNsYXNzKQo+ID4gPiAgewo+ID4gPiAgICAgICBz dHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwo+ID4gPiArICAgICBpbnQgcmV0ID0gLUVCVVNZOwo+ID4g Pgo+ID4gPiAgICAgICBpZiAoaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkK PiA+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1F QlVTWTsKPiA+ID4KPiA+ID4gICAgICAgR0VNX0JVR19PTihvYmotPmJpbmRfY291bnQpOwo+ID4g PiAgICAgICBpZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfcGFnZXMob2JqKSkKPiA+ID4gLSAgICAg ICAgICAgICByZXR1cm47Cj4gPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+Cj4gPiA+ ICAgICAgIC8qIE1heSBiZSBjYWxsZWQgYnkgc2hyaW5rZXIgZnJvbSB3aXRoaW4gZ2V0X3BhZ2Vz KCkgKG9uIGFub3RoZXIgYm8pICovCj4gPiA+ICAgICAgIG11dGV4X2xvY2tfbmVzdGVkKCZvYmot Pm1tLmxvY2ssIHN1YmNsYXNzKTsKPiA+ID4gQEAgLTI0ODAsOCArMjQ4MSwxMSBAQCB2b2lkIF9f aTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+ID4gPiAgICAgICBpZiAoIUlTX0VSUihwYWdlcykpCj4gPiA+ICAgICAgICAgICAgICAgb2Jq LT5vcHMtPnB1dF9wYWdlcyhvYmosIHBhZ2VzKTsKPiA+ID4KPiA+ID4gKyAgICAgcmV0ID0gMDsK PiA+ID4gIHVubG9jazoKPiA+ID4gICAgICAgbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwo+ ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiByZXQ7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICBib29s IGk5MTVfc2dfdHJpbShzdHJ1Y3Qgc2dfdGFibGUgKm9yaWdfc3QpCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPiA+ID4gaW5kZXggMmM5YjI4NDAzNmQxLi5hOGYz YzMwNGRiNTUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3VzZXJwdHIuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2Vy cHRyLmMKPiA+ID4gQEAgLTUwLDc5ICs1MCw4NCBAQCBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIg ewo+ID4gPiAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOwo+ID4gPiAgICAgICBzdHJ1Y3Qg bW11X25vdGlmaWVyIG1uOwo+ID4gPiAgICAgICBzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgb2JqZWN0 czsKPiA+ID4gLSAgICAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwo+ID4gPiArICAgICBz dHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+ID4gPiAgfTsKPiA+ID4KPiA+ID4gIHN0cnVjdCBp OTE1X21tdV9vYmplY3Qgewo+ID4gPiAgICAgICBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1u Owo+ID4gPiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ID4gPiAgICAg ICBzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlIGl0Owo+ID4gPiAtICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxpbms7Cj4gPiA+IC0gICAgIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+ID4gPiAtICAg ICBib29sIGF0dGFjaGVkOwo+ID4gPiAgfTsKPiA+ID4KPiA+ID4gLXN0YXRpYyB2b2lkIGNhbmNl bF91c2VycHRyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gLXsKPiA+ID4gLSAgICAg c3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpt byksIHdvcmspOwo+ID4gPiAtICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g bW8tPm9iajsKPiA+ID4gLSAgICAgc3RydWN0IHdvcmtfc3RydWN0ICphY3RpdmU7Cj4gPiA+IC0K PiA+ID4gLSAgICAgLyogQ2FuY2VsIGFueSBhY3RpdmUgd29ya2VyIGFuZCBmb3JjZSB1cyB0byBy ZS1ldmFsdWF0ZSBndXAgKi8KPiA+ID4gLSAgICAgbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsK PiA+ID4gLSAgICAgYWN0aXZlID0gZmV0Y2hfYW5kX3plcm8oJm9iai0+dXNlcnB0ci53b3JrKTsK PiA+ID4gLSAgICAgbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwo+ID4gPiAtICAgICBpZiAo YWN0aXZlKQo+ID4gPiAtICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPiAtCj4gPiA+IC0gICAg IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwgSTkxNV9XQUlUX0FMTCwgTUFYX1NDSEVEVUxFX1RJ TUVPVVQsIE5VTEwpOwo+ID4gPiAtCj4gPiA+IC0gICAgIG11dGV4X2xvY2soJm9iai0+YmFzZS5k ZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiA+IC0KPiA+ID4gLSAgICAgLyogV2UgYXJlIGluc2lkZSBh IGt0aHJlYWQgY29udGV4dCBhbmQgY2FuJ3QgYmUgaW50ZXJydXB0ZWQgKi8KPiA+ID4gLSAgICAg aWYgKGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKSA9PSAwKQo+ID4gPiAtICAgICAgICAgICAg IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmosIEk5MTVfTU1fTk9STUFMKTsKPiA+ID4g LSAgICAgV0FSTl9PTkNFKGk5MTVfZ2VtX29iamVjdF9oYXNfcGFnZXMob2JqKSwKPiA+ID4gLSAg ICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVsZWFzZSBwYWdlczogYmluZF9jb3VudD0lZCwgcGFn ZXNfcGluX2NvdW50PSVkLCBwaW5fZ2xvYmFsPSVkXG4iLAo+ID4gPiAtICAgICAgICAgICAgICAg b2JqLT5iaW5kX2NvdW50LAo+ID4gPiAtICAgICAgICAgICAgICAgYXRvbWljX3JlYWQoJm9iai0+ bW0ucGFnZXNfcGluX2NvdW50KSwKPiA+ID4gLSAgICAgICAgICAgICAgIG9iai0+cGluX2dsb2Jh bCk7Cj4gPiA+IC0KPiA+ID4gLSAgICAgbXV0ZXhfdW5sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+ID4gPiAtCj4gPiA+IC1vdXQ6Cj4gPiA+IC0gICAgIGk5MTVfZ2VtX29iamVj dF9wdXQob2JqKTsKPiA+ID4gLX0KPiA+ID4gLQo+ID4gPiAgc3RhdGljIHZvaWQgYWRkX29iamVj dChzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbykKPiA+ID4gIHsKPiA+ID4gLSAgICAgaWYgKG1v LT5hdHRhY2hlZCkKPiA+ID4gKyAgICAgaWYgKCFSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIpKQo+ ID4gPiAgICAgICAgICAgICAgIHJldHVybjsKPiA+ID4KPiA+ID4gICAgICAgaW50ZXJ2YWxfdHJl ZV9pbnNlcnQoJm1vLT5pdCwgJm1vLT5tbi0+b2JqZWN0cyk7Cj4gPiA+IC0gICAgIG1vLT5hdHRh Y2hlZCA9IHRydWU7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICBzdGF0aWMgdm9pZCBkZWxfb2JqZWN0 KHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vKQo+ID4gPiAgewo+ID4gPiAtICAgICBpZiAoIW1v LT5hdHRhY2hlZCkKPiA+ID4gKyAgICAgaWYgKFJCX0VNUFRZX05PREUoJm1vLT5pdC5yYikpCj4g PiA+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gPgo+ID4gPiAgICAgICBpbnRlcnZhbF90cmVl X3JlbW92ZSgmbW8tPml0LCAmbW8tPm1uLT5vYmplY3RzKTsKPiA+ID4gLSAgICAgbW8tPmF0dGFj aGVkID0gZmFsc2U7Cj4gPiA+ICsgICAgIFJCX0NMRUFSX05PREUoJm1vLT5pdC5yYik7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkCj4gPiA+ICtfX2k5MTVfZ2VtX3VzZXJwdHJf c2V0X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHZhbHVlKQo+ ID4gPiArewo+ID4gPiArICAgICBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbyA9IG9iai0+dXNl cnB0ci5tbXVfb2JqZWN0Owo+ID4gPiArCj4gPiA+ICsgICAgIC8qCj4gPiA+ICsgICAgICAqIER1 cmluZyBtbV9pbnZhbGlkYXRlX3JhbmdlIHdlIG5lZWQgdG8gY2FuY2VsIGFueSB1c2VycHRyIHRo YXQKPiA+ID4gKyAgICAgICogb3ZlcmxhcHMgdGhlIHJhbmdlIGJlaW5nIGludmFsaWRhdGVkLiBE b2luZyBzbyByZXF1aXJlcyB0aGUKPiA+ID4gKyAgICAgICogc3RydWN0X211dGV4LCBhbmQgdGhh dCByaXNrcyByZWN1cnNpb24uIEluIG9yZGVyIHRvIGNhdXNlCj4gPiA+ICsgICAgICAqIHJlY3Vy c2lvbiwgdGhlIHVzZXIgbXVzdCBhbGlhcyB0aGUgdXNlcnB0ciBhZGRyZXNzIHNwYWNlIHdpdGgK PiA+ID4gKyAgICAgICogYSBHVFQgbW1hcHBpbmcgKHBvc3NpYmxlIHdpdGggYSBNQVBfRklYRUQp IC0gdGhlbiB3aGVuIHdlIGhhdmUKPiA+ID4gKyAgICAgICogdG8gaW52YWxpZGF0ZSB0aGF0IG1t YXBpbmcsIG1tX2ludmFsaWRhdGVfcmFuZ2UgaXMgY2FsbGVkIHdpdGgKPiA+ID4gKyAgICAgICog dGhlIHVzZXJwdHIgYWRkcmVzcyAqYW5kKiB0aGUgc3RydWN0X211dGV4IGhlbGQuICBUbyBwcmV2 ZW50IHRoYXQKPiA+ID4gKyAgICAgICogd2Ugc2V0IGEgZmxhZyB1bmRlciB0aGUgaTkxNV9tbXVf bm90aWZpZXIgc3BpbmxvY2sgdG8gaW5kaWNhdGUKPiA+ID4gKyAgICAgICogd2hldGhlciB0aGlz IG9iamVjdCBpcyB2YWxpZC4KPiA+ID4gKyAgICAgICovCj4gPiA+ICsgICAgIGlmICghbW8pCj4g PiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsgICAgIHNwaW5fbG9jaygm bW8tPm1uLT5sb2NrKTsKPiA+ID4gKyAgICAgaWYgKHZhbHVlKQo+ID4gPiArICAgICAgICAgICAg IGFkZF9vYmplY3QobW8pOwo+ID4gPiArICAgICBlbHNlCj4gPiA+ICsgICAgICAgICAgICAgZGVs X29iamVjdChtbyk7Cj4gPiA+ICsgICAgIHNwaW5fdW5sb2NrKCZtby0+bW4tPmxvY2spOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgc3RydWN0IG11dGV4ICpfX2k5MTVfbXV0ZXhfbG9j a19yZWN1cnNpdmUoc3RydWN0IG11dGV4ICptKQo+ID4gPiArewo+ID4gPiArICAgICBzd2l0Y2gg KG11dGV4X3RyeWxvY2tfcmVjdXJzaXZlKG0pKSB7Cj4gPiA+ICsgICAgIGRlZmF1bHQ6Cj4gPiA+ ICsgICAgIGNhc2UgTVVURVhfVFJZTE9DS19GQUlMRUQ6Cj4gPiA+ICsgICAgICAgICAgICAgbXV0 ZXhfbG9jayhtKTsKPiA+ID4gKyAgICAgY2FzZSBNVVRFWF9UUllMT0NLX1NVQ0NFU1M6Cj4gPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIG07Cj4gPiA+ICsKPiA+ID4gKyAgICAgY2FzZSBNVVRFWF9U UllMT0NLX1JFQ1VSU0lWRToKPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRUVY SVNUKTsKPiA+ID4gKyAgICAgfQo+ID4gPiAgfQo+ID4gPgo+ID4gPiAgc3RhdGljIGludCBpOTE1 X2dlbV91c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmll ciAqX21uLAo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBlbmQsCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBibG9ja2FibGUpCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGVuZCwKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2th YmxlKQo+ID4gPiAgewo+ID4gPiAgICAgICBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uID0K PiA+ID4gICAgICAgICAgICAgICBjb250YWluZXJfb2YoX21uLCBzdHJ1Y3QgaTkxNV9tbXVfbm90 aWZpZXIsIG1uKTsKPiA+ID4gLSAgICAgc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4gPiA+ ICAgICAgIHN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKml0Owo+ID4gPiAtICAgICBMSVNUX0hF QUQoY2FuY2VsbGVkKTsKPiA+ID4gKyAgICAgc3RydWN0IG11dGV4ICp1bmxvY2sgPSBOVUxMOwo+ ID4gPiArICAgICBpbnQgcmV0ID0gMDsKPiA+ID4KPiA+ID4gICAgICAgaWYgKFJCX0VNUFRZX1JP T1QoJm1uLT5vYmplY3RzLnJiX3Jvb3QpKQo+ID4gPiAgICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4gPiBAQCAtMTMzLDExICsxMzgsMTYgQEAgc3RhdGljIGludCBpOTE1X2dlbV91c2VycHRyX21u X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ID4gPiAg ICAgICBzcGluX2xvY2soJm1uLT5sb2NrKTsKPiA+ID4gICAgICAgaXQgPSBpbnRlcnZhbF90cmVl X2l0ZXJfZmlyc3QoJm1uLT5vYmplY3RzLCBzdGFydCwgZW5kKTsKPiA+ID4gICAgICAgd2hpbGUg KGl0KSB7Cj4gPiA+ICsgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKPiA+ID4gKyAgICAgICAgICAgICBib29sIGhhc19wYWdlcyA9IGZhbHNlOwo+ID4gPiArCj4g PiA+ICAgICAgICAgICAgICAgaWYgKCFibG9ja2FibGUpIHsKPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgIHNwaW5fdW5sb2NrKCZtbi0+bG9jayk7Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLUVBR0FJTjsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FQUdB SU47Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gICAgICAgICAgICAg ICB9Cj4gPiA+IC0gICAgICAgICAgICAgLyogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQgbGF0 ZSB3aGVuIGRlc3Ryb3lpbmcgdGhlCj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICAvKgo+ID4g PiArICAgICAgICAgICAgICAqIFRoZSBtbXVfb2JqZWN0IGlzIHJlbGVhc2VkIGxhdGUgd2hlbiBk ZXN0cm95aW5nIHRoZQo+ID4gPiAgICAgICAgICAgICAgICAqIEdFTSBvYmplY3Qgc28gaXQgaXMg ZW50aXJlbHkgcG9zc2libGUgdG8gZ2FpbiBhCj4gPiA+ICAgICAgICAgICAgICAgICogcmVmZXJl bmNlIG9uIGFuIG9iamVjdCBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBmcmVlZAo+ID4gPiAgICAg ICAgICAgICAgICAqIHNpbmNlIG91ciBzZXJpYWxpc2F0aW9uIGlzIHZpYSB0aGUgc3BpbmxvY2sg YW5kIG5vdAo+ID4gPiBAQCAtMTQ2LDIxICsxNTYsNDQgQEAgc3RhdGljIGludCBpOTE1X2dlbV91 c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21u LAo+ID4gPiAgICAgICAgICAgICAgICAqIHVzZS1hZnRlci1mcmVlIHdlIG9ubHkgYWNxdWlyZSBh IHJlZmVyZW5jZSBvbiB0aGUKPiA+ID4gICAgICAgICAgICAgICAgKiBvYmplY3QgaWYgaXQgaXMg bm90IGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4KPiA+ID4gICAgICAgICAgICAg ICAgKi8KPiA+ID4gLSAgICAgICAgICAgICBtbyA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGk5 MTVfbW11X29iamVjdCwgaXQpOwo+ID4gPiAtICAgICAgICAgICAgIGlmIChrcmVmX2dldF91bmxl c3NfemVybygmbW8tPm9iai0+YmFzZS5yZWZjb3VudCkpCj4gPiA+IC0gICAgICAgICAgICAgICAg ICAgICBxdWV1ZV93b3JrKG1uLT53cSwgJm1vLT53b3JrKTsKPiA+ID4gKyAgICAgICAgICAgICBv YmogPSBjb250YWluZXJfb2YoaXQsIHN0cnVjdCBpOTE1X21tdV9vYmplY3QsIGl0KS0+b2JqOwo+ ID4gPiArICAgICAgICAgICAgIGlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+YmFzZS5y ZWZjb3VudCkpIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGl0ID0gaW50ZXJ2YWxfdHJl ZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBlbmQpOwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiArICAgICAgICAgICAgIHNwaW5f dW5sb2NrKCZtbi0+bG9jayk7Cj4gPiA+Cj4gPiA+IC0gICAgICAgICAgICAgbGlzdF9hZGQoJm1v LT5saW5rLCAmY2FuY2VsbGVkKTsKPiA+ID4gLSAgICAgICAgICAgICBpdCA9IGludGVydmFsX3Ry ZWVfaXRlcl9uZXh0KGl0LCBzdGFydCwgZW5kKTsKPiA+ID4gKyAgICAgICAgICAgICAvKiBDYW5j ZWwgYW55IHBlbmRpbmcgd29ya2VyIGFuZCBmb3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAgKi8K PiA+ID4gKyAgICAgICAgICAgICBtdXRleF9sb2NrX25lc3RlZCgmb2JqLT5tbS5sb2NrLCBJOTE1 X01NX1NIUklOS0VSKTsKPiA+Cj4gPiBtdXRleF9sb2NrX25lc3RlZCBpcyBtZWFudCBmb3Igc3Rh dGljIG5lc3RpbmcuIFRoaXMgaGVyZSBpcyByYXRoZXIKPiA+IGR5bmFtaWMsIGFuZCBJIGRvbid0 IHJlYWxseSBzZWUgd2hlcmUgdGhlIGd1YXJhbnRlZSBpcyB0aGF0IHRoZSBjbGFzc2ljCj4gPiBk ZWFkbG9jayBpc24ndCBwb3NzaWJsZToKPgo+IEl0J3MgbWVhbnQgdG8gYmUgYWZ0ZXIgcHV0X3Bh Z2VzID09IDAgdG8gZW5zdXJlIGl0IG9ubHkgYXBwbGllZCB0byBhCj4gZGlmZmVyZW50IG9iamVj dC4gQSBiaXQgbW9yZSBpbnZvbHZlZCB0byBkbyBpdCBleGFjdGx5IGhvdyBJIHdhbnQsIHRoYXQK PiBpcyB0byBiYXNpY2FsbHkgaW5jb3Jwb3JhdGUgaXQgaW50byBwdXRfcGFnZXMgaXRzZWxmLiBB Y3R1YWxseSwgaWYgaXQgaXMKPiBpbiB0aGUgcHV0X3BhZ2VzIGl0IHNob3VsZCBqdXN0IHdvcmsu Li4KClNvIGZvciB0aGUgc2hyaW5rZXIgSSBndWVzcyB5b3UgY2FuIG1ha2UgdGhpcyB3b3JrLiBG b3IgbXkgdGFzdGUKdGhlcmUncyBub3QgZW5vdWdoIEdFTV9XQVJOX09OIHRvIGNoZWNrIHRoZSBp bnZhcmlhbnRzIG9mIHRoZSBuZXN0aW5nCnNjaGVtZSAoSSBhc3N1bWUgaXQgaXMgbGlzdF9lbXB0 eShvYmotPm1tLmxpbmspIC0+IHVzZSBJOTE1X01NX05PUk1BTCwKYW5kIEk5MTVfTU1fU0hSSU5L RVIgZm9yIGFueW9uZSB3aG8gZGlzY292ZXJzIGFuIG9iamVjdCB0aHJvdWdoIHRoZQpvYmotPm1t LmxpbmsgbGlzdHMsIGJ1dCB3b3VsZCBiZSBuaWNlIHRvIGRvdWJsZS1jaGVjayB0aGF0IGV2ZXJ5 IHRpbWUKd2UgdGFrZSB0aGUgb2JqLT5tbS5sb2NrIHdpdGggYSBHRU1fV0FSTl9PTikuCgpCdXQg Zm9yIHRoZSBtbXUgbm90aWZpZXIgSSdtIG5vdCBzZWVpbmcgdGhhdCBzYW1lIGd1YXJhbnRlZSwg YW5kCmRpZG4ndCBzcG90IGFueSBvdGhlciwgc28gbm90IGNsZWFyIHdoeSB0aGlzIHdvcmtzLiBB bmQgYXNzdW1pbmcgSSdtCnJlYWRpbmcgdGhlIGNvZGUgY29ycmVjdGx5LCB3ZSBkbyBpbnNlcnQg dGhlIG9iamVjdCBpbnRvIHRoZSByYiB0cmVlCmFscmVhZHkgd2hlbiBndXAgd29ya2VyIGlzIHN0 aWxsIGRvaW5nIGl0J3MgdGhpbmcuCgpPciBtYXliZSB0aGVyZSdzIGFub3RoZXIgaW52YXJpYW50 IHRoYXQgZ3Vhcm5hdGVlcyB0aGUgbmVzdGluZywgYnV0IEkKY2hlY2tlZCBhIGZldyBhbmQgdGhl eSBhbGwgZG9uJ3Qgc2VlbSB0byB3b3JrIChsaWtlIHBhZ2VzX3Bpbl9jb3VudCkuCi1EYW5pZWwK LS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0 MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==