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:24:00 +0200 Message-ID: <20190417132400.GZ13337@phenom.ffwll.local> References: <20190407165243.54043-1-noralf@tronnes.org> <20190407165243.54043-3-noralf@tronnes.org> <20190416075931.GS2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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 T24gVHVlLCBBcHIgMTYsIDIwMTkgYXQgMDg6NDY6MjRQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IAo+IERlbiAxNi4wNC4yMDE5IDA5LjU5LCBza3JldiBEYW5pZWwgVmV0dGVy Ogo+ID4gT24gU3VuLCBBcHIgMDcsIDIwMTkgYXQgMDY6NTI6MzNQTSArMDIwMCwgTm9yYWxmIFRy w7hubmVzIHdyb3RlOgo+ID4+IGRybV9mYl9oZWxwZXJfaXNfYm91bmQoKSBpcyB1c2VkIHRvIGNo ZWNrIGlmIERSTSB1c2Vyc3BhY2UgaXMgaW4gY29udHJvbC4KPiA+PiBUaGlzIGlzIGRvbmUgYnkg bG9va2luZyBhdCB0aGUgZmIgb24gdGhlIHByaW1hcnkgcGxhbmUuIEJ5IHRoZSB0aW1lCj4gPj4g ZmItaGVscGVyIGdldHMgYXJvdW5kIHRvIGNvbW1pdHRpbmcsIGl0J3MgcG9zc2libGUgdGhhdCB0 aGUgZmFjdHMgaGF2ZQo+ID4+IGNoYW5nZWQuCj4gPj4KPiA+PiBBdm9pZCB0aGlzIHJhY2UgYnkg aG9sZGluZyB0aGUgZHJtX2RldmljZS0+bWFzdGVyX211dGV4IGxvY2sgd2hpbGUKPiA+PiBjb21t aXR0aW5nLiBXaGVuIERSTSB1c2Vyc3BhY2UgZG9lcyBpdHMgZmlyc3Qgb3BlbiwgaXQgd2lsbCBu b3cgd2FpdAo+ID4+IHVudGlsIGZiLWhlbHBlciBpcyBkb25lLiBUaGUgaGVscGVyIHdpbGwgc3Rh eSBhd2F5IGlmIHRoZXJlJ3MgYSBtYXN0ZXIuCj4gPj4KPiA+PiBMb2NraW5nIHJ1bGU6IEFsd2F5 cyB0YWtlIHRoZSBmYi1oZWxwZXIgbG9jayBmaXJzdC4KPiA+Pgo+ID4+IHYyOgo+ID4+IC0gUmVt b3ZlIGRybV9mYl9oZWxwZXJfaXNfYm91bmQoKSAoRGFuaWVsIFZldHRlcikKPiA+PiAtIE5vIG5l ZWQgdG8gY2hlY2sgZmJfaGVscGVyLT5kZXYtPm1hc3RlciBpbgo+ID4+ICAgZHJtX2ZiX2hlbHBl cl9zaW5nbGVfZmJfcHJvYmUoKSwgcmVzdG9yZV9mYmRldl9tb2RlKCkgaGFzIHRoZSBjaGVjay4K PiA+Pgo+ID4+IFN1Z2dlc3RlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVz Lm9yZz4KPiA+PiAtLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdXRoLmMgICAgICB8IDIw ICsrKysrKysrCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCA5MCArKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9p bnRlcm5hbC5oICB8ICAyICsKPiA+PiAgMyBmaWxlcyBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCsp LCA0NSBkZWxldGlvbnMoLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F1dGguYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXV0aC5jCj4gPj4gaW5kZXggMTY2OWM0 MmM0MGVkLi5kYjE5OTgwN2I3ZGMgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdXRoLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYwo+ID4+IEBAIC0z NjgsMyArMzY4LDIzIEBAIHZvaWQgZHJtX21hc3Rlcl9wdXQoc3RydWN0IGRybV9tYXN0ZXIgKipt YXN0ZXIpCj4gPj4gIAkqbWFzdGVyID0gTlVMTDsKPiA+PiAgfQo+ID4+ICBFWFBPUlRfU1lNQk9M KGRybV9tYXN0ZXJfcHV0KTsKPiA+PiArCj4gPj4gKy8qIFVzZWQgYnkgZHJtX2NsaWVudCBhbmQg ZHJtX2ZiX2hlbHBlciAqLwo+ID4+ICtib29sIGRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+ICt7Cj4gPj4gKwltdXRleF9sb2NrKCZkZXYtPm1h c3Rlcl9tdXRleCk7Cj4gPj4gKwlpZiAoZGV2LT5tYXN0ZXIpIHsKPiA+PiArCQltdXRleF91bmxv Y2soJmRldi0+bWFzdGVyX211dGV4KTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4g Pj4gKwo+ID4+ICsJcmV0dXJuIHRydWU7Cj4gPj4gK30KPiA+PiArRVhQT1JUX1NZTUJPTChkcm1f bWFzdGVyX2ludGVybmFsX2FjcXVpcmUpOwo+ID4+ICsKPiA+PiArLyogVXNlZCBieSBkcm1fY2xp ZW50IGFuZCBkcm1fZmJfaGVscGVyICovCj4gPj4gK3ZvaWQgZHJtX21hc3Rlcl9pbnRlcm5hbF9y ZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gK3sKPiA+PiArCW11dGV4X3VubG9j aygmZGV2LT5tYXN0ZXJfbXV0ZXgpOwo+ID4+ICt9Cj4gPj4gK0VYUE9SVF9TWU1CT0woZHJtX21h c3Rlcl9pbnRlcm5hbF9yZWxlYXNlKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiA+PiBp bmRleCA4NDc5MWRkNGE5MGQuLmE2YmUwOWFlODk5YiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9oZWxwZXIuYwo+ID4+IEBAIC00NCw2ICs0NCw3IEBACj4gPj4gIAo+ID4+ICAjaW5jbHVkZSAi ZHJtX2NydGNfaW50ZXJuYWwuaCIKPiA+PiAgI2luY2x1ZGUgImRybV9jcnRjX2hlbHBlcl9pbnRl cm5hbC5oIgo+ID4+ICsjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCj4gPj4gIAo+ID4+ICBzdGF0 aWMgYm9vbCBkcm1fZmJkZXZfZW11bGF0aW9uID0gdHJ1ZTsKPiA+PiAgbW9kdWxlX3BhcmFtX25h bWVkKGZiZGV2X2VtdWxhdGlvbiwgZHJtX2ZiZGV2X2VtdWxhdGlvbiwgYm9vbCwgMDYwMCk7Cj4g Pj4gQEAgLTUwOSw3ICs1MTAsNyBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9sZWdh Y3koc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiA+PiAgCXJldHVybiByZXQ7Cj4g Pj4gIH0KPiA+PiAgCj4gPj4gLXN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gPj4gK3N0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9t b2RlX2ZvcmNlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gPiAKPiA+IEJpa2Vz aGVkOiB1c3VhbGx5IHRoZSBmdW5jdGlvbiB2YXJpYW50IHRoYXQncyBydW4gd2l0aCBsb2NrcyBh bHJlYWR5IHRha2VuCj4gPiBpcyBjYWxsZWQgX2xvY2tlZCBvciBoYXMgYSBfXyBwcmVmaXguIF9m b3JjZSBmZWVscyBhIGJpdCBtaXNwbGFjZWQuCj4gCj4gVGhpcyBpc24ndCBhIF9sb2NrZWQgZnVu Y3Rpb24gaW4gdGhlIHVzdWFsIHNlbnNlLCBpdCBpczogYXBwbHkgbW9kZXNldAo+IGV2ZW4gaWYg dGhlcmUgaXMgYSBEUk0gbWFzdGVyLiBTbyB3ZSBhcmUgX2ZvcmNpbmcgYSBtb2Rlc2V0IG9uIGEK PiBwb3NzaWJseSB1bmV4cGVjdGluZyBEUk0gdXNlcnNwYWNlLiBUbyBtZSBhIF9sb2NrZWQgZnVu Y3Rpb24gd291bGQgaW1wbHkKPiB0aGF0IHRoZSBjYWxsZXIgX211c3RfIHRha2UgYSBsb2NrIGlu IG9yZGVyIHRvIHVzZSBpdC4KCkhtLCBnb29kIHBvaW50LiBTZWUgbXkgY29tbWVudHMgbGF0ZXIg b24sIEknbSBub3Qgc3VyZSB0aGUgImZvcmNpbmciIGlzCnJlYWxseSB3aGF0IHdlIHdhbnQuIEkg dGhpbmsgbGFzdGNsb3NlIHdvdWxkIGJlIG11Y2ggYmV0dGVyIHNlcnZlZCBpZiBpdAphbHNvIGNo ZWNrcyBmb3IgbWFzdGVyIHN0YXR1cy4KCj4gQnV0IG5vIGJpZyBkZWFsLCBJIGNhbiByZW5hbWUg aXQgX2xvY2tlZCBpZiB0aGF0IHJlYWRzIGJldHRlci4gQWZ0ZXIgYQo+IGZldyB5ZWFycyBvZiBy ZWFkaW5nIGtlcm5lbCBjb2RlIEkndmUgY29tZSB0byBhcHByZWNpYXRlIHRoZSBjb25zaXN0ZW5j eQo+IGluIGhvdyB0aGluZ3MgYXJlIGRvbmUgYW5kIG5hbWVkLiBFdmVyeSB0aW1lIHRoaW5ncyBh cmUgZGlmZmVyZW50IGl0Cj4gc2xvd3MgZG93biBteSBpbnRlcm5hbCBsb2dpYy9wYXR0ZXJuIHBh cnNlci4KCklmIHlvdSBhZ3JlZSB3aXRoIHRoZSBlbnRpcmUgIndlIHNob3VsZCBfZm9yY2UiIHRo ZW4gSSB0aGluayB0aGUgX18gcHJlZml4CndvdWxkIGZpdC4gSXQncyB0aGUgZ2VuZXJhbCAiYmV3 YXJlLCB0aGlzIGlzIHNwZWNpYWwvaW50ZXJuYWwiIGFubm90YXRpb24uCk15IF9sb2NrZWQgc3Vn Z2VzdGlvbiB3YXMgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGVyZSdzIG5ldmVyIGEgcmVh bApjYXNlIHdoZXJlIHdlIHdhbnQgdG8gZG8gdGhlIHVucHJvdGVjdGVkIG1vZGVzZXQgZm9yIGFu IGludGVybmFsCmRybV9jbGllbnQuCgo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPj4gIAo+ID4+IEBAIC01MTksNiArNTIwLDIxIEBAIHN0 YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIpCj4gPj4gIAkJcmV0dXJuIHJlc3RvcmVfZmJkZXZfbW9kZV9sZWdhY3koZmJfaGVscGVyKTsK PiA+PiAgfQo+ID4+ICAKPiA+PiArc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGUoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiA+PiArewo+ID4+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlp ZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKQo+ID4+ICsJCXJldHVybiAtRUJV U1k7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlX2ZvcmNlKGZiX2hlbHBl cik7Cj4gPj4gKwo+ID4+ICsJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7Cj4gPj4g Kwo+ID4+ICsJcmV0dXJuIHJldDsKPiA+PiArfQo+ID4+ICsKPiA+PiAgLyoqCj4gPj4gICAqIGRy bV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkIC0gcmVzdG9yZSBmYmRldiBj b25maWd1cmF0aW9uCj4gPj4gICAqIEBmYl9oZWxwZXI6IGRyaXZlci1hbGxvY2F0ZWQgZmJkZXYg aGVscGVyLCBjYW4gYmUgTlVMTAo+ID4+IEBAIC01NTYsMzQgKzU3Miw2IEBAIGludCBkcm1fZmJf aGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyKQo+ID4+ICB9Cj4gPj4gIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9yZXN0 b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQpOwo+ID4+ICAKPiA+PiAtc3RhdGljIGJvb2wgZHJtX2Zi X2hlbHBlcl9pc19ib3VuZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ID4+IC17 Cj4gPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPj4gLQlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPj4gLQlpbnQgYm91bmQgPSAwLCBjcnRjc19ib3VuZCA9 IDA7Cj4gPj4gLQo+ID4+IC0JLyoKPiA+PiAtCSAqIFNvbWV0aW1lcyB1c2VyIHNwYWNlIHdhbnRz IGV2ZXJ5dGhpbmcgZGlzYWJsZWQsIHNvIGRvbid0IHN0ZWFsIHRoZQo+ID4+IC0JICogZGlzcGxh eSBpZiB0aGVyZSdzIGEgbWFzdGVyLgo+ID4+IC0JICovCj4gPj4gLQlpZiAoUkVBRF9PTkNFKGRl di0+bWFzdGVyKSkKPiA+PiAtCQlyZXR1cm4gZmFsc2U7Cj4gPj4gLQo+ID4+IC0JZHJtX2Zvcl9l YWNoX2NydGMoY3J0YywgZGV2KSB7Cj4gPj4gLQkJZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0 ZXgsIE5VTEwpOwo+ID4+IC0JCWlmIChjcnRjLT5wcmltYXJ5LT5mYikKPiA+PiAtCQkJY3J0Y3Nf Ym91bmQrKzsKPiA+PiAtCQlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIgPT0gZmJfaGVscGVyLT5mYikK PiA+PiAtCQkJYm91bmQrKzsKPiA+PiAtCQlkcm1fbW9kZXNldF91bmxvY2soJmNydGMtPm11dGV4 KTsKPiA+PiAtCX0KPiA+PiAtCj4gPj4gLQlpZiAoYm91bmQgPCBjcnRjc19ib3VuZCkKPiA+PiAt CQlyZXR1cm4gZmFsc2U7Cj4gPj4gLQo+ID4+IC0JcmV0dXJuIHRydWU7Cj4gPj4gLX0KPiA+PiAt Cj4gPj4gICNpZmRlZiBDT05GSUdfTUFHSUNfU1lTUlEKPiA+PiAgLyoKPiA+PiAgICogcmVzdG9y ZSBmYmNvbiBkaXNwbGF5IGZvciBhbGwga21zIGRyaXZlcidzIHVzaW5nIHRoaXMgaGVscGVyLCB1 c2VkIGZvciBzeXNycQo+ID4+IEBAIC02MDQsNyArNTkyLDcgQEAgc3RhdGljIGJvb2wgZHJtX2Zi X2hlbHBlcl9mb3JjZV9rZXJuZWxfbW9kZSh2b2lkKQo+ID4+ICAJCQljb250aW51ZTsKPiA+PiAg Cj4gPj4gIAkJbXV0ZXhfbG9jaygmaGVscGVyLT5sb2NrKTsKPiA+PiAtCQlyZXQgPSByZXN0b3Jl X2ZiZGV2X21vZGUoaGVscGVyKTsKPiA+PiArCQlyZXQgPSByZXN0b3JlX2ZiZGV2X21vZGVfZm9y Y2UoaGVscGVyKTsKPiA+IAo+ID4gSSdkIGxlYXZlIHRoaXMgYXMtaXMsIGJlY2F1c2U6Cj4gPiBh KSBJJ20gdG9vIGxhenkgdG8gcmV2aWV3IHRoZSBsb2NraW5nIG9mIG91ciBvcGVuL2Nsb3NlIGNh bGxzIHRvIGNvbnZpbmNlCj4gPiBteXNlbGYgdGhhdCBsYXN0Y2xvc2UgY2FuJ3QgcmFjZSB3aXRo IHRoZSBuZXh0IG9wZW4KPiA+IGIpIGl0IHdvbid0IGh1cnQKPiA+IGMpIGxlYXZlcyB0aGUgZG9v ciBvcGVuIHRvIGVhc2lseSBtYWtlIG91ciBvcGVuL2Nsb3NlIG1vcmUgY29uY3VycmVudCBpbgo+ ID4gdGhlIGZ1dHVyZQo+ID4gCj4gCj4gSSdtIG5vdCBhY3R1YWxseSBjaGFuZ2luZyBhbnl0aGlu ZyBoZXJlLCBpdCdzIHJlc3RvcmVfZmJkZXZfbW9kZSgpIHRoYXQKPiBoYXMgY2hhbmdlZCwgaXQg bm93IGJhaWxzIG91dCBpZiB0aGVyZSdzIGEgRFJNIG1hc3Rlci4gSWYgd2UgZG9uJ3QKPiBjaGFu Z2UgdGhpcyB0byBfZm9yY2UvX2xvY2tlZCwgdGhlbiBzeXNycSB3b24ndCB3b3JrIGlmIHRoZXJl J3MgYSBEUk0KPiBtYXN0ZXIuIFdoaWNoIGtpbmQgb2YgZGVmZWF0cyB0aGUgd2hvbGUgaWRlYSBv ZiB0aGlzICdnaXZlIG1lIGZiY29uCj4gcmlnaHQgbm93JyBmdW5jdGlvbmFsaXR5IGRvZXNuJ3Qg aXQ/CgpVaCwgSSB3YXMgYmxpbmQsIEkgdGhvdWdodCB0aGlzIHdhcyBmb3IgbGFzdGNsb3NlLiBX aXRoIHRoaXMgb25lIGhlcmUgSQp0aGluayBfZm9yY2UgbWFrZXMgc2Vuc2UuIEkgc3RpbGwgdGhp bmsgdGhhdCB0aGUgbWFpbiBkcm1fY2xpZW50X21vZGVzZXQKaW50ZXJmYWNlIHNob3VsZCBiZSB0 aGUgbm9ybWFsIG9uZSB3aGljaCBjaGVja3MgZm9yIG1hc3RlciBmb3IgeW91LgoKPiA+PiAgCQlp ZiAocmV0KQo+ID4+ICAJCQllcnJvciA9IHRydWU7Cj4gPj4gIAkJbXV0ZXhfdW5sb2NrKCZoZWxw ZXItPmxvY2spOwo+ID4+IEBAIC02NjMsMjAgKzY1MSwyMiBAQCBzdGF0aWMgdm9pZCBkcG1zX2xl Z2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgZHBtc19tb2RlKQo+ID4+ ICBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2RwbXMoc3RydWN0IGZiX2luZm8gKmluZm8sIGlu dCBkcG1zX21vZGUpCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIgPSBpbmZvLT5wYXI7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVy LT5kZXY7Cj4gPj4gIAo+ID4+ICAJLyoKPiA+PiAgCSAqIEZvciBlYWNoIENSVEMgaW4gdGhpcyBm YiwgdHVybiB0aGUgY29ubmVjdG9ycyBvbi9vZmYuCj4gPj4gIAkgKi8KPiA+PiAgCW11dGV4X2xv Y2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPj4gLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQo ZmJfaGVscGVyKSkgewo+ID4+IC0JCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiA+ PiAtCQlyZXR1cm47Cj4gPj4gLQl9Cj4gPj4gKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNx dWlyZShkZXYpKQo+ID4+ICsJCWdvdG8gdW5sb2NrOwo+ID4+ICAKPiA+PiAtCWlmIChkcm1fZHJ2 X3VzZXNfYXRvbWljX21vZGVzZXQoZmJfaGVscGVyLT5kZXYpKQo+ID4+ICsJaWYgKGRybV9kcnZf dXNlc19hdG9taWNfbW9kZXNldChkZXYpKQo+ID4+ICAJCXJlc3RvcmVfZmJkZXZfbW9kZV9hdG9t aWMoZmJfaGVscGVyLCBkcG1zX21vZGUgPT0gRFJNX01PREVfRFBNU19PTik7Cj4gPj4gIAllbHNl Cj4gPj4gIAkJZHBtc19sZWdhY3koZmJfaGVscGVyLCBkcG1zX21vZGUpOwo+ID4+ICsKPiA+PiAr CWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwo+ID4+ICt1bmxvY2s6Cj4gPj4gIAlt dXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPj4gIH0KPiA+PiAgCj4gPj4gQEAgLTE1 MDksNiArMTQ5OSw3IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAg KmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ID4+ICBpbnQgZHJtX2ZiX2hlbHBlcl9zZXRj bWFwKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiA+PiAgewo+ ID4+ICAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiA+PiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPiA+PiAgCWludCByZXQ7 Cj4gPj4gIAo+ID4+ICAJaWYgKG9vcHNfaW5fcHJvZ3Jlc3MpCj4gPj4gQEAgLTE1MTYsOSArMTUw Nyw5IEBAIGludCBkcm1fZmJfaGVscGVyX3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0 cnVjdCBmYl9pbmZvICppbmZvKQo+ID4+ICAKPiA+PiAgCW11dGV4X2xvY2soJmZiX2hlbHBlci0+ bG9jayk7Cj4gPj4gIAo+ID4+IC0JaWYgKCFkcm1fZmJfaGVscGVyX2lzX2JvdW5kKGZiX2hlbHBl cikpIHsKPiA+PiArCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikpIHsKPiA+ PiAgCQlyZXQgPSAtRUJVU1k7Cj4gPj4gLQkJZ290byBvdXQ7Cj4gPj4gKwkJZ290byB1bmxvY2s7 Cj4gPj4gIAl9Cj4gPj4gIAo+ID4+ICAJaWYgKGluZm8tPmZpeC52aXN1YWwgPT0gRkJfVklTVUFM X1RSVUVDT0xPUikKPiA+PiBAQCAtMTUyOCw3ICsxNTE5LDggQEAgaW50IGRybV9mYl9oZWxwZXJf c2V0Y21hcChzdHJ1Y3QgZmJfY21hcCAqY21hcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gPj4g IAllbHNlCj4gPj4gIAkJcmV0ID0gc2V0Y21hcF9sZWdhY3koY21hcCwgaW5mbyk7Cj4gPj4gIAo+ ID4+IC1vdXQ6Cj4gPj4gKwlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKPiA+PiAr dW5sb2NrOgo+ID4+ICAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ID4+ICAKPiA+ PiAgCXJldHVybiByZXQ7Cj4gPj4gQEAgLTE1NDgsMTIgKzE1NDAsMTMgQEAgaW50IGRybV9mYl9o ZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsCj4gPj4g IAkJCXVuc2lnbmVkIGxvbmcgYXJnKQo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ID4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGZiX2hlbHBlci0+ZGV2Owo+ID4+ICAJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQ7Cj4g Pj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPj4gIAlpbnQgcmV0ID0gMDsKPiA+PiAgCj4g Pj4gIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ID4+IC0JaWYgKCFkcm1fZmJfaGVs cGVyX2lzX2JvdW5kKGZiX2hlbHBlcikpIHsKPiA+PiArCWlmICghZHJtX21hc3Rlcl9pbnRlcm5h bF9hY3F1aXJlKGRldikpIHsKPiA+PiAgCQlyZXQgPSAtRUJVU1k7Cj4gPj4gIAkJZ290byB1bmxv Y2s7Cj4gPj4gIAl9Cj4gPj4gQEAgLTE1OTEsMTEgKzE1ODQsMTIgQEAgaW50IGRybV9mYl9oZWxw ZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGludCBjbWQsCj4gPj4gIAkJ fQo+ID4+ICAKPiA+PiAgCQlyZXQgPSAwOwo+ID4+IC0JCWdvdG8gdW5sb2NrOwo+ID4+ICsJCWJy ZWFrOwo+ID4+ICAJZGVmYXVsdDoKPiA+PiAgCQlyZXQgPSAtRU5PVFRZOwo+ID4+ICAJfQo+ID4+ ICAKPiA+PiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwo+ID4+ICB1bmxvY2s6 Cj4gPj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPj4gIAlyZXR1cm4gcmV0 Owo+ID4+IEBAIC0xODQ3LDE1ICsxODQxLDE4IEBAIGludCBkcm1fZmJfaGVscGVyX3Bhbl9kaXNw bGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAo+ID4+ICAJCXJldHVybiAtRUJVU1k7 Cj4gPj4gIAo+ID4+ICAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiA+PiAtCWlmICgh ZHJtX2ZiX2hlbHBlcl9pc19ib3VuZChmYl9oZWxwZXIpKSB7Cj4gPj4gLQkJbXV0ZXhfdW5sb2Nr KCZmYl9oZWxwZXItPmxvY2spOwo+ID4+IC0JCXJldHVybiAtRUJVU1k7Cj4gPj4gKwlpZiAoIWRy bV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKSB7Cj4gPj4gKwkJcmV0ID0gLUVCVVNZOwo+ ID4+ICsJCWdvdG8gdW5sb2NrOwo+ID4+ICAJfQo+ID4+ICAKPiA+PiAgCWlmIChkcm1fZHJ2X3Vz ZXNfYXRvbWljX21vZGVzZXQoZGV2KSkKPiA+PiAgCQlyZXQgPSBwYW5fZGlzcGxheV9hdG9taWMo dmFyLCBpbmZvKTsKPiA+PiAgCWVsc2UKPiA+PiAgCQlyZXQgPSBwYW5fZGlzcGxheV9sZWdhY3ko dmFyLCBpbmZvKTsKPiA+PiArCj4gPj4gKwlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2 KTsKPiA+PiArdW5sb2NrOgo+ID4+ICAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ ID4+ICAKPiA+PiAgCXJldHVybiByZXQ7Cj4gPj4gQEAgLTIwMTQsNyArMjAxMSw3IEBAIHN0YXRp YyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciwKPiA+PiAgCQlEUk1fSU5GTygiQ2Fubm90IGZpbmQgYW55IGNydGMgb3Igc2l6 ZXNcbiIpOwo+ID4+ICAKPiA+PiAgCQkvKiBGaXJzdCB0aW1lOiBkaXNhYmxlIGFsbCBjcnRjJ3Mu LiAqLwo+ID4+IC0JCWlmICghZmJfaGVscGVyLT5kZWZlcnJlZF9zZXR1cCAmJiAhUkVBRF9PTkNF KGZiX2hlbHBlci0+ZGV2LT5tYXN0ZXIpKQo+ID4+ICsJCWlmICghZmJfaGVscGVyLT5kZWZlcnJl ZF9zZXR1cCkKPiA+PiAgCQkJcmVzdG9yZV9mYmRldl9tb2RlKGZiX2hlbHBlcik7Cj4gPiAKPiA+ IEkgdGhpbmsgd2UgbmVlZCB0byByZXR1cm4gdGhlIGVycm5vIGhlcmUsIHNpbmNlIHdpdGhvdXQg dGhhdCB0aGUgaGlnaGVyCj4gPiBsZXZlbHMgd29uJ3QgcmVwcm9iZSBjb3JyZWN0bHkuIFBsdXMg d2UgbmVlZCB0byByZW1hcCAtRUJVU1kgdG8gLUVBR0FJTgo+ID4gKG9yIGNoYW5nZSB0aGUgY2hl Y2sgaW4gX19kcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnX2FuZF91bmxvY2sgdG8gYWxzbwo+ ID4gcmV0cnkgb24gLUVCVVNZKS4KPiA+IAo+IAo+IEkgZG9uJ3QgdGhpbmsgc28sIGJlY2F1c2Ug LUVBR0FJTiBpcyByZXR1cm5lZCB1bmNvbmRpdGlvbmFsbHkgb24gdGhlCj4gbGluZSBiZWxvdy4g VGhlIHJlc3RvcmVfZmJkZXZfbW9kZSgpIGNhbGwgaXMganVzdCB0byBkaXNhYmxlIHRoZSBvdXRw dXRzCj4gX2lmXyB0aGVyZSdzIG5vIERSTSBtYXN0ZXIsIHdoaWNoIHRoYXQgZnVuY3Rpb24gbm93 IGNoZWNrcyBmb3IuCgpIbSByaWdodCwgbXkgbG9naWMgcGFyc2VyIHdlbnQgKmJvaW5rKiBJIHRo aW5rLiBMb29rcyBnb29kIG9uIDJuZCByZWFkaW5nLgotRGFuaWVsCj4gCj4gTm9yYWxmLgo+IAo+ ID4+ICAJCXJldHVybiAtRUFHQUlOOwo+ID4+ICAJfQo+ID4+IEBAIC0yODQyLDYgKzI4MzksNyBA QCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcpOwo+ID4+ICAgKi8K PiA+PiAgaW50IGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudChzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyKQo+ID4+ICB7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJf aGVscGVyLT5kZXY7Cj4gPj4gIAlpbnQgZXJyID0gMDsKPiA+PiAgCj4gPj4gIAlpZiAoIWRybV9m YmRldl9lbXVsYXRpb24gfHwgIWZiX2hlbHBlcikKPiA+PiBAQCAtMjg1NCwxMiArMjg1MiwxNCBA QCBpbnQgZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIpCj4gPj4gIAkJcmV0dXJuIGVycjsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gLQlpZiAo IWZiX2hlbHBlci0+ZmIgfHwgIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewo+ ID4+ICsJaWYgKCFmYl9oZWxwZXItPmZiIHx8ICFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUo ZGV2KSkgewo+ID4+ICAJCWZiX2hlbHBlci0+ZGVsYXllZF9ob3RwbHVnID0gdHJ1ZTsKPiA+PiAg CQltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPj4gIAkJcmV0dXJuIGVycjsKPiA+ PiAgCX0KPiA+PiAgCj4gPj4gKwlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKPiA+ PiArCj4gPj4gIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+ID4+ICAKPiA+PiAgCWRybV9zZXR1cF9j cnRjcyhmYl9oZWxwZXIsIGZiX2hlbHBlci0+ZmItPndpZHRoLCBmYl9oZWxwZXItPmZiLT5oZWln aHQpOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKPiA+PiBpbmRleCBkOWE0ODNhNWZjZTAuLjNl ZTk3Yzk5OThhMiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFs LmgKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKPiA+PiBAQCAtOTEs NiArOTEsOCBAQCBpbnQgZHJtX2Ryb3BtYXN0ZXJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiA+PiAgCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiA+ PiAgaW50IGRybV9tYXN0ZXJfb3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gPj4g IHZvaWQgZHJtX21hc3Rlcl9yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiA+ PiArYm9vbCBkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gPj4gK3ZvaWQgZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ID4+ICAKPiA+PiAgLyogZHJtX3N5c2ZzLmMgKi8KPiA+PiAgZXh0ZXJuIHN0 cnVjdCBjbGFzcyAqZHJtX2NsYXNzOwo+ID4gCj4gPiBXaXRoIHRoZSBuaXRzIGFkZHJlc3NlZDoK PiA+IAo+ID4gUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwu Y2g+Cj4gPiAKPiA+PiAtLSAKPiA+PiAyLjIwLjEKPiA+Pgo+ID4gCgotLSAKRGFuaWVsIFZldHRl cgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs