From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 02/12] drm/fb-helper: Avoid race with DRM userspace Date: Wed, 17 Apr 2019 15:26:30 +0200 Message-ID: <20190417132630.GA13337@phenom.ffwll.local> References: <20190407165243.54043-1-noralf@tronnes.org> <20190407165243.54043-3-noralf@tronnes.org> <20190416075931.GS2665@phenom.ffwll.local> <20190417132400.GZ13337@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2300A89415 for ; Wed, 17 Apr 2019 13:26:35 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id y67so7703579ede.2 for ; Wed, 17 Apr 2019 06:26:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190417132400.GZ13337@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBcHIgMTcsIDIwMTkgYXQgMDM6MjQ6MDBQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIEFwciAxNiwgMjAxOSBhdCAwODo0NjoyNFBNICswMjAwLCBOb3JhbGYg VHLDuG5uZXMgd3JvdGU6Cj4gPiAKPiA+IAo+ID4gRGVuIDE2LjA0LjIwMTkgMDkuNTksIHNrcmV2 IERhbmllbCBWZXR0ZXI6Cj4gPiA+IE9uIFN1biwgQXByIDA3LCAyMDE5IGF0IDA2OjUyOjMzUE0g KzAyMDAsIE5vcmFsZiBUcsO4bm5lcyB3cm90ZToKPiA+ID4+IGRybV9mYl9oZWxwZXJfaXNfYm91 bmQoKSBpcyB1c2VkIHRvIGNoZWNrIGlmIERSTSB1c2Vyc3BhY2UgaXMgaW4gY29udHJvbC4KPiA+ ID4+IFRoaXMgaXMgZG9uZSBieSBsb29raW5nIGF0IHRoZSBmYiBvbiB0aGUgcHJpbWFyeSBwbGFu ZS4gQnkgdGhlIHRpbWUKPiA+ID4+IGZiLWhlbHBlciBnZXRzIGFyb3VuZCB0byBjb21taXR0aW5n LCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZhY3RzIGhhdmUKPiA+ID4+IGNoYW5nZWQuCj4gPiA+ Pgo+ID4gPj4gQXZvaWQgdGhpcyByYWNlIGJ5IGhvbGRpbmcgdGhlIGRybV9kZXZpY2UtPm1hc3Rl cl9tdXRleCBsb2NrIHdoaWxlCj4gPiA+PiBjb21taXR0aW5nLiBXaGVuIERSTSB1c2Vyc3BhY2Ug ZG9lcyBpdHMgZmlyc3Qgb3BlbiwgaXQgd2lsbCBub3cgd2FpdAo+ID4gPj4gdW50aWwgZmItaGVs cGVyIGlzIGRvbmUuIFRoZSBoZWxwZXIgd2lsbCBzdGF5IGF3YXkgaWYgdGhlcmUncyBhIG1hc3Rl ci4KPiA+ID4+Cj4gPiA+PiBMb2NraW5nIHJ1bGU6IEFsd2F5cyB0YWtlIHRoZSBmYi1oZWxwZXIg bG9jayBmaXJzdC4KPiA+ID4+Cj4gPiA+PiB2MjoKPiA+ID4+IC0gUmVtb3ZlIGRybV9mYl9oZWxw ZXJfaXNfYm91bmQoKSAoRGFuaWVsIFZldHRlcikKPiA+ID4+IC0gTm8gbmVlZCB0byBjaGVjayBm Yl9oZWxwZXItPmRldi0+bWFzdGVyIGluCj4gPiA+PiAgIGRybV9mYl9oZWxwZXJfc2luZ2xlX2Zi X3Byb2JlKCksIHJlc3RvcmVfZmJkZXZfbW9kZSgpIGhhcyB0aGUgY2hlY2suCj4gPiA+Pgo+ID4g Pj4gU3VnZ2VzdGVkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ ID4gPj4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ Cj4gPiA+PiAtLS0KPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYyAgICAgIHwgMjAg KysrKysrKysKPiA+ID4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgOTAgKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+PiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9pbnRlcm5hbC5oICB8ICAyICsKPiA+ID4+ICAzIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlv bnMoKyksIDQ1IGRlbGV0aW9ucygtKQo+ID4gPj4KPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2F1dGguYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXV0aC5jCj4gPiA+PiBp bmRleCAxNjY5YzQyYzQwZWQuLmRiMTk5ODA3YjdkYyAxMDA2NDQKPiA+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXV0aC5jCj4gPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1 dGguYwo+ID4gPj4gQEAgLTM2OCwzICszNjgsMjMgQEAgdm9pZCBkcm1fbWFzdGVyX3B1dChzdHJ1 Y3QgZHJtX21hc3RlciAqKm1hc3RlcikKPiA+ID4+ICAJKm1hc3RlciA9IE5VTEw7Cj4gPiA+PiAg fQo+ID4gPj4gIEVYUE9SVF9TWU1CT0woZHJtX21hc3Rlcl9wdXQpOwo+ID4gPj4gKwo+ID4gPj4g Ky8qIFVzZWQgYnkgZHJtX2NsaWVudCBhbmQgZHJtX2ZiX2hlbHBlciAqLwo+ID4gPj4gK2Jvb2wg ZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ PiArewo+ID4gPj4gKwltdXRleF9sb2NrKCZkZXYtPm1hc3Rlcl9tdXRleCk7Cj4gPiA+PiArCWlm IChkZXYtPm1hc3Rlcikgewo+ID4gPj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXYtPm1hc3Rlcl9tdXRl eCk7Cj4gPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+PiArCX0KPiA+ID4+ICsKPiA+ID4+ICsJ cmV0dXJuIHRydWU7Cj4gPiA+PiArfQo+ID4gPj4gK0VYUE9SVF9TWU1CT0woZHJtX21hc3Rlcl9p bnRlcm5hbF9hY3F1aXJlKTsKPiA+ID4+ICsKPiA+ID4+ICsvKiBVc2VkIGJ5IGRybV9jbGllbnQg YW5kIGRybV9mYl9oZWxwZXIgKi8KPiA+ID4+ICt2b2lkIGRybV9tYXN0ZXJfaW50ZXJuYWxfcmVs ZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPj4gK3sKPiA+ID4+ICsJbXV0ZXhfdW5s b2NrKCZkZXYtPm1hc3Rlcl9tdXRleCk7Cj4gPiA+PiArfQo+ID4gPj4gK0VYUE9SVF9TWU1CT0wo ZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKTsKPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu Ywo+ID4gPj4gaW5kZXggODQ3OTFkZDRhOTBkLi5hNmJlMDlhZTg5OWIgMTAwNjQ0Cj4gPiA+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPiA+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPiA+PiBAQCAtNDQsNiArNDQsNyBAQAo+ID4gPj4g IAo+ID4gPj4gICNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgo+ID4gPj4gICNpbmNsdWRl ICJkcm1fY3J0Y19oZWxwZXJfaW50ZXJuYWwuaCIKPiA+ID4+ICsjaW5jbHVkZSAiZHJtX2ludGVy bmFsLmgiCj4gPiA+PiAgCj4gPiA+PiAgc3RhdGljIGJvb2wgZHJtX2ZiZGV2X2VtdWxhdGlvbiA9 IHRydWU7Cj4gPiA+PiAgbW9kdWxlX3BhcmFtX25hbWVkKGZiZGV2X2VtdWxhdGlvbiwgZHJtX2Zi ZGV2X2VtdWxhdGlvbiwgYm9vbCwgMDYwMCk7Cj4gPiA+PiBAQCAtNTA5LDcgKzUxMCw3IEBAIHN0 YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyKQo+ID4gPj4gIAlyZXR1cm4gcmV0Owo+ID4gPj4gIH0KPiA+ID4+ICAKPiA+ID4+ IC1zdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyKQo+ID4gPj4gK3N0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2ZvcmNlKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gPiA+IAo+ID4gPiBCaWtlc2hlZDogdXN1YWxs eSB0aGUgZnVuY3Rpb24gdmFyaWFudCB0aGF0J3MgcnVuIHdpdGggbG9ja3MgYWxyZWFkeSB0YWtl bgo+ID4gPiBpcyBjYWxsZWQgX2xvY2tlZCBvciBoYXMgYSBfXyBwcmVmaXguIF9mb3JjZSBmZWVs cyBhIGJpdCBtaXNwbGFjZWQuCj4gPiAKPiA+IFRoaXMgaXNuJ3QgYSBfbG9ja2VkIGZ1bmN0aW9u IGluIHRoZSB1c3VhbCBzZW5zZSwgaXQgaXM6IGFwcGx5IG1vZGVzZXQKPiA+IGV2ZW4gaWYgdGhl cmUgaXMgYSBEUk0gbWFzdGVyLiBTbyB3ZSBhcmUgX2ZvcmNpbmcgYSBtb2Rlc2V0IG9uIGEKPiA+ IHBvc3NpYmx5IHVuZXhwZWN0aW5nIERSTSB1c2Vyc3BhY2UuIFRvIG1lIGEgX2xvY2tlZCBmdW5j dGlvbiB3b3VsZCBpbXBseQo+ID4gdGhhdCB0aGUgY2FsbGVyIF9tdXN0XyB0YWtlIGEgbG9jayBp biBvcmRlciB0byB1c2UgaXQuCj4gCj4gSG0sIGdvb2QgcG9pbnQuIFNlZSBteSBjb21tZW50cyBs YXRlciBvbiwgSSdtIG5vdCBzdXJlIHRoZSAiZm9yY2luZyIgaXMKPiByZWFsbHkgd2hhdCB3ZSB3 YW50LiBJIHRoaW5rIGxhc3RjbG9zZSB3b3VsZCBiZSBtdWNoIGJldHRlciBzZXJ2ZWQgaWYgaXQK PiBhbHNvIGNoZWNrcyBmb3IgbWFzdGVyIHN0YXR1cy4KPiAKPiA+IEJ1dCBubyBiaWcgZGVhbCwg SSBjYW4gcmVuYW1lIGl0IF9sb2NrZWQgaWYgdGhhdCByZWFkcyBiZXR0ZXIuIEFmdGVyIGEKPiA+ IGZldyB5ZWFycyBvZiByZWFkaW5nIGtlcm5lbCBjb2RlIEkndmUgY29tZSB0byBhcHByZWNpYXRl IHRoZSBjb25zaXN0ZW5jeQo+ID4gaW4gaG93IHRoaW5ncyBhcmUgZG9uZSBhbmQgbmFtZWQuIEV2 ZXJ5IHRpbWUgdGhpbmdzIGFyZSBkaWZmZXJlbnQgaXQKPiA+IHNsb3dzIGRvd24gbXkgaW50ZXJu YWwgbG9naWMvcGF0dGVybiBwYXJzZXIuCj4gCj4gSWYgeW91IGFncmVlIHdpdGggdGhlIGVudGly ZSAid2Ugc2hvdWxkIF9mb3JjZSIgdGhlbiBJIHRoaW5rIHRoZSBfXyBwcmVmaXgKPiB3b3VsZCBm aXQuIEl0J3MgdGhlIGdlbmVyYWwgImJld2FyZSwgdGhpcyBpcyBzcGVjaWFsL2ludGVybmFsIiBh bm5vdGF0aW9uLgo+IE15IF9sb2NrZWQgc3VnZ2VzdGlvbiB3YXMgdW5kZXIgdGhlIGFzc3VtcHRp b24gdGhhdCB0aGVyZSdzIG5ldmVyIGEgcmVhbAo+IGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBkbyB0 aGUgdW5wcm90ZWN0ZWQgbW9kZXNldCBmb3IgYW4gaW50ZXJuYWwKPiBkcm1fY2xpZW50Lgo+IAo+ ID4gPj4gIHsKPiA+ID4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2 Owo+ID4gPj4gIAo+ID4gPj4gQEAgLTUxOSw2ICs1MjAsMjEgQEAgc3RhdGljIGludCByZXN0b3Jl X2ZiZGV2X21vZGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiA+ID4+ICAJCXJl dHVybiByZXN0b3JlX2ZiZGV2X21vZGVfbGVnYWN5KGZiX2hlbHBlcik7Cj4gPiA+PiAgfQo+ID4g Pj4gIAo+ID4gPj4gK3N0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIpCj4gPiA+PiArewo+ID4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPiA+PiArCWludCByZXQ7Cj4gPiA+PiArCj4gPiA+PiAr CWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikpCj4gPiA+PiArCQlyZXR1cm4g LUVCVVNZOwo+ID4gPj4gKwo+ID4gPj4gKwlyZXQgPSByZXN0b3JlX2ZiZGV2X21vZGVfZm9yY2Uo ZmJfaGVscGVyKTsKPiA+ID4+ICsKPiA+ID4+ICsJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNl KGRldik7Cj4gPiA+PiArCj4gPiA+PiArCXJldHVybiByZXQ7Cj4gPiA+PiArfQo+ID4gPj4gKwo+ ID4gPj4gIC8qKgo+ID4gPj4gICAqIGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3Vu bG9ja2VkIC0gcmVzdG9yZSBmYmRldiBjb25maWd1cmF0aW9uCj4gPiA+PiAgICogQGZiX2hlbHBl cjogZHJpdmVyLWFsbG9jYXRlZCBmYmRldiBoZWxwZXIsIGNhbiBiZSBOVUxMCj4gPiA+PiBAQCAt NTU2LDM0ICs1NzIsNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5s b2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiA+ID4+ICB9Cj4gPiA+PiAg RVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZCk7 Cj4gPiA+PiAgCj4gPiA+PiAtc3RhdGljIGJvb2wgZHJtX2ZiX2hlbHBlcl9pc19ib3VuZChzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ID4gPj4gLXsKPiA+ID4+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ID4gPj4gLQlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gPiA+PiAtCWludCBib3VuZCA9IDAsIGNydGNzX2JvdW5kID0gMDsKPiA+ID4+IC0K PiA+ID4+IC0JLyoKPiA+ID4+IC0JICogU29tZXRpbWVzIHVzZXIgc3BhY2Ugd2FudHMgZXZlcnl0 aGluZyBkaXNhYmxlZCwgc28gZG9uJ3Qgc3RlYWwgdGhlCj4gPiA+PiAtCSAqIGRpc3BsYXkgaWYg dGhlcmUncyBhIG1hc3Rlci4KPiA+ID4+IC0JICovCj4gPiA+PiAtCWlmIChSRUFEX09OQ0UoZGV2 LT5tYXN0ZXIpKQo+ID4gPj4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gPj4gLQo+ID4gPj4gLQlkcm1f Zm9yX2VhY2hfY3J0YyhjcnRjLCBkZXYpIHsKPiA+ID4+IC0JCWRybV9tb2Rlc2V0X2xvY2soJmNy dGMtPm11dGV4LCBOVUxMKTsKPiA+ID4+IC0JCWlmIChjcnRjLT5wcmltYXJ5LT5mYikKPiA+ID4+ IC0JCQljcnRjc19ib3VuZCsrOwo+ID4gPj4gLQkJaWYgKGNydGMtPnByaW1hcnktPmZiID09IGZi X2hlbHBlci0+ZmIpCj4gPiA+PiAtCQkJYm91bmQrKzsKPiA+ID4+IC0JCWRybV9tb2Rlc2V0X3Vu bG9jaygmY3J0Yy0+bXV0ZXgpOwo+ID4gPj4gLQl9Cj4gPiA+PiAtCj4gPiA+PiAtCWlmIChib3Vu ZCA8IGNydGNzX2JvdW5kKQo+ID4gPj4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gPj4gLQo+ID4gPj4g LQlyZXR1cm4gdHJ1ZTsKPiA+ID4+IC19Cj4gPiA+PiAtCj4gPiA+PiAgI2lmZGVmIENPTkZJR19N QUdJQ19TWVNSUQo+ID4gPj4gIC8qCj4gPiA+PiAgICogcmVzdG9yZSBmYmNvbiBkaXNwbGF5IGZv ciBhbGwga21zIGRyaXZlcidzIHVzaW5nIHRoaXMgaGVscGVyLCB1c2VkIGZvciBzeXNycQo+ID4g Pj4gQEAgLTYwNCw3ICs1OTIsNyBAQCBzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2ZvcmNlX2tl cm5lbF9tb2RlKHZvaWQpCj4gPiA+PiAgCQkJY29udGludWU7Cj4gPiA+PiAgCj4gPiA+PiAgCQlt dXRleF9sb2NrKCZoZWxwZXItPmxvY2spOwo+ID4gPj4gLQkJcmV0ID0gcmVzdG9yZV9mYmRldl9t b2RlKGhlbHBlcik7Cj4gPiA+PiArCQlyZXQgPSByZXN0b3JlX2ZiZGV2X21vZGVfZm9yY2UoaGVs cGVyKTsKPiA+ID4gCj4gPiA+IEknZCBsZWF2ZSB0aGlzIGFzLWlzLCBiZWNhdXNlOgo+ID4gPiBh KSBJJ20gdG9vIGxhenkgdG8gcmV2aWV3IHRoZSBsb2NraW5nIG9mIG91ciBvcGVuL2Nsb3NlIGNh bGxzIHRvIGNvbnZpbmNlCj4gPiA+IG15c2VsZiB0aGF0IGxhc3RjbG9zZSBjYW4ndCByYWNlIHdp dGggdGhlIG5leHQgb3Blbgo+ID4gPiBiKSBpdCB3b24ndCBodXJ0Cj4gPiA+IGMpIGxlYXZlcyB0 aGUgZG9vciBvcGVuIHRvIGVhc2lseSBtYWtlIG91ciBvcGVuL2Nsb3NlIG1vcmUgY29uY3VycmVu dCBpbgo+ID4gPiB0aGUgZnV0dXJlCj4gPiA+IAo+ID4gCj4gPiBJJ20gbm90IGFjdHVhbGx5IGNo YW5naW5nIGFueXRoaW5nIGhlcmUsIGl0J3MgcmVzdG9yZV9mYmRldl9tb2RlKCkgdGhhdAo+ID4g aGFzIGNoYW5nZWQsIGl0IG5vdyBiYWlscyBvdXQgaWYgdGhlcmUncyBhIERSTSBtYXN0ZXIuIElm IHdlIGRvbid0Cj4gPiBjaGFuZ2UgdGhpcyB0byBfZm9yY2UvX2xvY2tlZCwgdGhlbiBzeXNycSB3 b24ndCB3b3JrIGlmIHRoZXJlJ3MgYSBEUk0KPiA+IG1hc3Rlci4gV2hpY2gga2luZCBvZiBkZWZl YXRzIHRoZSB3aG9sZSBpZGVhIG9mIHRoaXMgJ2dpdmUgbWUgZmJjb24KPiA+IHJpZ2h0IG5vdycg ZnVuY3Rpb25hbGl0eSBkb2Vzbid0IGl0Pwo+IAo+IFVoLCBJIHdhcyBibGluZCwgSSB0aG91Z2h0 IHRoaXMgd2FzIGZvciBsYXN0Y2xvc2UuIFdpdGggdGhpcyBvbmUgaGVyZSBJCj4gdGhpbmsgX2Zv cmNlIG1ha2VzIHNlbnNlLiBJIHN0aWxsIHRoaW5rIHRoYXQgdGhlIG1haW4gZHJtX2NsaWVudF9t b2Rlc2V0Cj4gaW50ZXJmYWNlIHNob3VsZCBiZSB0aGUgbm9ybWFsIG9uZSB3aGljaCBjaGVja3Mg Zm9yIG1hc3RlciBmb3IgeW91LgoKT2ssIEkgcmVhZCB0aGUgbGF0ZXIgcGF0Y2hlcyBhbmQgeW91 IGFscmVhZHkgaGF2ZSBhIGNvbW1pdCgpIGFuZCBhCmNvbW1pdF9mb3JjZSgpLiBDb3VudCBtZSBj b252aW5jZWQgb24gYWxsIHBvaW50cy4KClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgoKYXMtaXMgb24gdGhpcyBwYXRjaC4KCkNoZWVycywgRGFuaWVs Cgo+IAo+ID4gPj4gIAkJaWYgKHJldCkKPiA+ID4+ICAJCQllcnJvciA9IHRydWU7Cj4gPiA+PiAg CQltdXRleF91bmxvY2soJmhlbHBlci0+bG9jayk7Cj4gPiA+PiBAQCAtNjYzLDIwICs2NTEsMjIg QEAgc3RhdGljIHZvaWQgZHBtc19sZWdhY3koc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciwgaW50IGRwbXNfbW9kZSkKPiA+ID4+ICBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2RwbXMo c3RydWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCj4gPiA+PiAgewo+ID4gPj4gIAlz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ID4gPj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPiA+PiAgCj4gPiA+PiAgCS8q Cj4gPiA+PiAgCSAqIEZvciBlYWNoIENSVEMgaW4gdGhpcyBmYiwgdHVybiB0aGUgY29ubmVjdG9y cyBvbi9vZmYuCj4gPiA+PiAgCSAqLwo+ID4gPj4gIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxv Y2spOwo+ID4gPj4gLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewo+ ID4gPj4gLQkJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ID4gPj4gLQkJcmV0dXJu Owo+ID4gPj4gLQl9Cj4gPiA+PiArCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRl dikpCj4gPiA+PiArCQlnb3RvIHVubG9jazsKPiA+ID4+ICAKPiA+ID4+IC0JaWYgKGRybV9kcnZf dXNlc19hdG9taWNfbW9kZXNldChmYl9oZWxwZXItPmRldikpCj4gPiA+PiArCWlmIChkcm1fZHJ2 X3VzZXNfYXRvbWljX21vZGVzZXQoZGV2KSkKPiA+ID4+ICAJCXJlc3RvcmVfZmJkZXZfbW9kZV9h dG9taWMoZmJfaGVscGVyLCBkcG1zX21vZGUgPT0gRFJNX01PREVfRFBNU19PTik7Cj4gPiA+PiAg CWVsc2UKPiA+ID4+ICAJCWRwbXNfbGVnYWN5KGZiX2hlbHBlciwgZHBtc19tb2RlKTsKPiA+ID4+ ICsKPiA+ID4+ICsJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7Cj4gPiA+PiArdW5s b2NrOgo+ID4gPj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPiA+PiAgfQo+ ID4gPj4gIAo+ID4gPj4gQEAgLTE1MDksNiArMTQ5OSw3IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9h dG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ID4gPj4g IGludCBkcm1fZmJfaGVscGVyX3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBm Yl9pbmZvICppbmZvKQo+ID4gPj4gIHsKPiA+ID4+ICAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciA9IGluZm8tPnBhcjsKPiA+ID4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZi X2hlbHBlci0+ZGV2Owo+ID4gPj4gIAlpbnQgcmV0Owo+ID4gPj4gIAo+ID4gPj4gIAlpZiAob29w c19pbl9wcm9ncmVzcykKPiA+ID4+IEBAIC0xNTE2LDkgKzE1MDcsOSBAQCBpbnQgZHJtX2ZiX2hl bHBlcl9zZXRjbWFwKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykK PiA+ID4+ICAKPiA+ID4+ICAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiA+ID4+ICAK PiA+ID4+IC0JaWYgKCFkcm1fZmJfaGVscGVyX2lzX2JvdW5kKGZiX2hlbHBlcikpIHsKPiA+ID4+ ICsJaWYgKCFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoZGV2KSkgewo+ID4gPj4gIAkJcmV0 ID0gLUVCVVNZOwo+ID4gPj4gLQkJZ290byBvdXQ7Cj4gPiA+PiArCQlnb3RvIHVubG9jazsKPiA+ ID4+ICAJfQo+ID4gPj4gIAo+ID4gPj4gIAlpZiAoaW5mby0+Zml4LnZpc3VhbCA9PSBGQl9WSVNV QUxfVFJVRUNPTE9SKQo+ID4gPj4gQEAgLTE1MjgsNyArMTUxOSw4IEBAIGludCBkcm1fZmJfaGVs cGVyX3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ ID4gPj4gIAllbHNlCj4gPiA+PiAgCQlyZXQgPSBzZXRjbWFwX2xlZ2FjeShjbWFwLCBpbmZvKTsK PiA+ID4+ICAKPiA+ID4+IC1vdXQ6Cj4gPiA+PiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFz ZShkZXYpOwo+ID4gPj4gK3VubG9jazoKPiA+ID4+ICAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXIt PmxvY2spOwo+ID4gPj4gIAo+ID4gPj4gIAlyZXR1cm4gcmV0Owo+ID4gPj4gQEAgLTE1NDgsMTIg KzE1NDAsMTMgQEAgaW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8s IHVuc2lnbmVkIGludCBjbWQsCj4gPiA+PiAgCQkJdW5zaWduZWQgbG9uZyBhcmcpCj4gPiA+PiAg ewo+ID4gPj4gIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ ID4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPiA+PiAg CXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0Owo+ID4gPj4gIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGM7Cj4gPiA+PiAgCWludCByZXQgPSAwOwo+ID4gPj4gIAo+ID4gPj4gIAltdXRleF9sb2Nr KCZmYl9oZWxwZXItPmxvY2spOwo+ID4gPj4gLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQo ZmJfaGVscGVyKSkgewo+ID4gPj4gKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShk ZXYpKSB7Cj4gPiA+PiAgCQlyZXQgPSAtRUJVU1k7Cj4gPiA+PiAgCQlnb3RvIHVubG9jazsKPiA+ ID4+ICAJfQo+ID4gPj4gQEAgLTE1OTEsMTEgKzE1ODQsMTIgQEAgaW50IGRybV9mYl9oZWxwZXJf aW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsCj4gPiA+PiAgCQl9 Cj4gPiA+PiAgCj4gPiA+PiAgCQlyZXQgPSAwOwo+ID4gPj4gLQkJZ290byB1bmxvY2s7Cj4gPiA+ PiArCQlicmVhazsKPiA+ID4+ICAJZGVmYXVsdDoKPiA+ID4+ICAJCXJldCA9IC1FTk9UVFk7Cj4g PiA+PiAgCX0KPiA+ID4+ICAKPiA+ID4+ICsJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRl dik7Cj4gPiA+PiAgdW5sb2NrOgo+ID4gPj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9j ayk7Cj4gPiA+PiAgCXJldHVybiByZXQ7Cj4gPiA+PiBAQCAtMTg0NywxNSArMTg0MSwxOCBAQCBp bnQgZHJtX2ZiX2hlbHBlcl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZh ciwKPiA+ID4+ICAJCXJldHVybiAtRUJVU1k7Cj4gPiA+PiAgCj4gPiA+PiAgCW11dGV4X2xvY2so JmZiX2hlbHBlci0+bG9jayk7Cj4gPiA+PiAtCWlmICghZHJtX2ZiX2hlbHBlcl9pc19ib3VuZChm Yl9oZWxwZXIpKSB7Cj4gPiA+PiAtCQltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4g PiA+PiAtCQlyZXR1cm4gLUVCVVNZOwo+ID4gPj4gKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxf YWNxdWlyZShkZXYpKSB7Cj4gPiA+PiArCQlyZXQgPSAtRUJVU1k7Cj4gPiA+PiArCQlnb3RvIHVu bG9jazsKPiA+ID4+ICAJfQo+ID4gPj4gIAo+ID4gPj4gIAlpZiAoZHJtX2Rydl91c2VzX2F0b21p Y19tb2Rlc2V0KGRldikpCj4gPiA+PiAgCQlyZXQgPSBwYW5fZGlzcGxheV9hdG9taWModmFyLCBp bmZvKTsKPiA+ID4+ICAJZWxzZQo+ID4gPj4gIAkJcmV0ID0gcGFuX2Rpc3BsYXlfbGVnYWN5KHZh ciwgaW5mbyk7Cj4gPiA+PiArCj4gPiA+PiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShk ZXYpOwo+ID4gPj4gK3VubG9jazoKPiA+ID4+ICAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxv Y2spOwo+ID4gPj4gIAo+ID4gPj4gIAlyZXR1cm4gcmV0Owo+ID4gPj4gQEAgLTIwMTQsNyArMjAx MSw3IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiA+ID4+ICAJCURSTV9JTkZPKCJDYW5ub3QgZmluZCBh bnkgY3J0YyBvciBzaXplc1xuIik7Cj4gPiA+PiAgCj4gPiA+PiAgCQkvKiBGaXJzdCB0aW1lOiBk aXNhYmxlIGFsbCBjcnRjJ3MuLiAqLwo+ID4gPj4gLQkJaWYgKCFmYl9oZWxwZXItPmRlZmVycmVk X3NldHVwICYmICFSRUFEX09OQ0UoZmJfaGVscGVyLT5kZXYtPm1hc3RlcikpCj4gPiA+PiArCQlp ZiAoIWZiX2hlbHBlci0+ZGVmZXJyZWRfc2V0dXApCj4gPiA+PiAgCQkJcmVzdG9yZV9mYmRldl9t b2RlKGZiX2hlbHBlcik7Cj4gPiA+IAo+ID4gPiBJIHRoaW5rIHdlIG5lZWQgdG8gcmV0dXJuIHRo ZSBlcnJubyBoZXJlLCBzaW5jZSB3aXRob3V0IHRoYXQgdGhlIGhpZ2hlcgo+ID4gPiBsZXZlbHMg d29uJ3QgcmVwcm9iZSBjb3JyZWN0bHkuIFBsdXMgd2UgbmVlZCB0byByZW1hcCAtRUJVU1kgdG8g LUVBR0FJTgo+ID4gPiAob3IgY2hhbmdlIHRoZSBjaGVjayBpbiBfX2RybV9mYl9oZWxwZXJfaW5p dGlhbF9jb25maWdfYW5kX3VubG9jayB0byBhbHNvCj4gPiA+IHJldHJ5IG9uIC1FQlVTWSkuCj4g PiA+IAo+ID4gCj4gPiBJIGRvbid0IHRoaW5rIHNvLCBiZWNhdXNlIC1FQUdBSU4gaXMgcmV0dXJu ZWQgdW5jb25kaXRpb25hbGx5IG9uIHRoZQo+ID4gbGluZSBiZWxvdy4gVGhlIHJlc3RvcmVfZmJk ZXZfbW9kZSgpIGNhbGwgaXMganVzdCB0byBkaXNhYmxlIHRoZSBvdXRwdXRzCj4gPiBfaWZfIHRo ZXJlJ3Mgbm8gRFJNIG1hc3Rlciwgd2hpY2ggdGhhdCBmdW5jdGlvbiBub3cgY2hlY2tzIGZvci4K PiAKPiBIbSByaWdodCwgbXkgbG9naWMgcGFyc2VyIHdlbnQgKmJvaW5rKiBJIHRoaW5rLiBMb29r cyBnb29kIG9uIDJuZCByZWFkaW5nLgo+IC1EYW5pZWwKPiA+IAo+ID4gTm9yYWxmLgo+ID4gCj4g PiA+PiAgCQlyZXR1cm4gLUVBR0FJTjsKPiA+ID4+ICAJfQo+ID4gPj4gQEAgLTI4NDIsNiArMjgz OSw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyk7Cj4gPiA+ PiAgICovCj4gPiA+PiAgaW50IGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudChzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ID4gPj4gIHsKPiA+ID4+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ID4gPj4gIAlpbnQgZXJyID0gMDsKPiA+ID4+ICAK PiA+ID4+ICAJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uIHx8ICFmYl9oZWxwZXIpCj4gPiA+PiBA QCAtMjg1NCwxMiArMjg1MiwxNCBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gPiA+PiAgCQlyZXR1cm4gZXJyOwo+ID4g Pj4gIAl9Cj4gPiA+PiAgCj4gPiA+PiAtCWlmICghZmJfaGVscGVyLT5mYiB8fCAhZHJtX2ZiX2hl bHBlcl9pc19ib3VuZChmYl9oZWxwZXIpKSB7Cj4gPiA+PiArCWlmICghZmJfaGVscGVyLT5mYiB8 fCAhZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikpIHsKPiA+ID4+ICAJCWZiX2hlbHBl ci0+ZGVsYXllZF9ob3RwbHVnID0gdHJ1ZTsKPiA+ID4+ICAJCW11dGV4X3VubG9jaygmZmJfaGVs cGVyLT5sb2NrKTsKPiA+ID4+ICAJCXJldHVybiBlcnI7Cj4gPiA+PiAgCX0KPiA+ID4+ICAKPiA+ ID4+ICsJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7Cj4gPiA+PiArCj4gPiA+PiAg CURSTV9ERUJVR19LTVMoIlxuIik7Cj4gPiA+PiAgCj4gPiA+PiAgCWRybV9zZXR1cF9jcnRjcyhm Yl9oZWxwZXIsIGZiX2hlbHBlci0+ZmItPndpZHRoLCBmYl9oZWxwZXItPmZiLT5oZWlnaHQpOwo+ ID4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCBiL2RyaXZl cnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAo+ID4gPj4gaW5kZXggZDlhNDgzYTVmY2UwLi4zZWU5 N2M5OTk4YTIgMTAwNjQ0Cj4gPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFs LmgKPiA+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAo+ID4gPj4gQEAg LTkxLDYgKzkxLDggQEAgaW50IGRybV9kcm9wbWFzdGVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gPiA+PiAgCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KTsKPiA+ID4+ICBpbnQgZHJtX21hc3Rlcl9vcGVuKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KTsKPiA+ID4+ICB2b2lkIGRybV9tYXN0ZXJfcmVsZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdik7Cj4gPiA+PiArYm9vbCBkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gPiA+PiArdm9pZCBkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2Uo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiA+PiAgCj4gPiA+PiAgLyogZHJtX3N5c2ZzLmMg Ki8KPiA+ID4+ICBleHRlcm4gc3RydWN0IGNsYXNzICpkcm1fY2xhc3M7Cj4gPiA+IAo+ID4gPiBX aXRoIHRoZSBuaXRzIGFkZHJlc3NlZDoKPiA+ID4gCj4gPiA+IFJldmlld2VkLWJ5OiBEYW5pZWwg VmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiAKPiA+ID4+IC0tIAo+ID4gPj4g Mi4yMC4xCj4gPiA+Pgo+ID4gPiAKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n Zng=