From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 13/16] drm/fb-helper: Avoid race with DRM userspace Date: Mon, 1 Apr 2019 09:12:54 +0200 Message-ID: <20190401071254.GQ2665@phenom.ffwll.local> References: <20190326175546.18126-1-noralf@tronnes.org> <20190326175546.18126-14-noralf@tronnes.org> <20190328081738.GT2665@phenom.ffwll.local> <67057e96-ea12-2b9f-0e90-b34ff8db6dcb@tronnes.org> 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 CE2C16E031 for ; Mon, 1 Apr 2019 07:12:58 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id a25so7182351edc.8 for ; Mon, 01 Apr 2019 00:12:58 -0700 (PDT) Content-Disposition: inline In-Reply-To: <67057e96-ea12-2b9f-0e90-b34ff8db6dcb@tronnes.org> 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 , intel-gfx@lists.freedesktop.org, mstaudt@suse.de, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBNYXIgMzAsIDIwMTkgYXQgMTA6MDc6NThQTSArMDEwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IAo+IERlbiAyOC4wMy4yMDE5IDA5LjE3LCBza3JldiBEYW5pZWwgVmV0dGVy Ogo+ID4gT24gVHVlLCBNYXIgMjYsIDIwMTkgYXQgMDY6NTU6NDNQTSArMDEwMCwgTm9yYWxmIFRy w7hubmVzIHdyb3RlOgo+ID4+IGRybV9mYl9oZWxwZXJfaXNfYm91bmQoKSBpcyB1c2VkIHRvIGNo ZWNrIGlmIERSTSB1c2Vyc3BhY2UgaXMgaW4gY29udHJvbC4KPiA+PiBUaGlzIGlzIGRvbmUgYnkg bG9va2luZyBhdCB0aGUgZmIgb24gdGhlIHByaW1hcnkgcGxhbmUuIEJ5IHRoZSB0aW1lCj4gPj4g ZmItaGVscGVyIGdldHMgYXJvdW5kIHRvIGNvbW1pdHRpbmcsIGl0J3MgcG9zc2libGUgdGhhdCB0 aGUgZmFjdHMgaGF2ZQo+ID4+IGNoYW5nZWQuCj4gPj4KPiA+PiBBdm9pZCB0aGlzIHJhY2UgYnkg aG9sZGluZyB0aGUgZHJtX2RldmljZS0+bWFzdGVyX211dGV4IGxvY2sgd2hpbGUKPiA+PiBjb21t aXR0aW5nLiBXaGVuIERSTSB1c2Vyc3BhY2UgZG9lcyBpdHMgZmlyc3Qgb3BlbiwgaXQgd2lsbCBu b3cgd2FpdAo+ID4+IHVudGlsIGZiLWhlbHBlciBpcyBkb25lLiBUaGUgaGVscGVyIHdpbGwgc3Rh eSBhd2F5IGlmIHRoZXJlJ3MgYSBtYXN0ZXIuCj4gPj4KPiA+PiBMb2NraW5nIHJ1bGU6IEFsd2F5 cyB0YWtlIHRoZSBmYi1oZWxwZXIgbG9jayBmaXJzdC4KPiA+Pgo+ID4+IFN1Z2dlc3RlZC1ieTog RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiA+PiBTaWduZWQtb2ZmLWJ5 OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiA+IAo+ID4gSSB0aGluayBp dCdkIGJlIGdvb2QgdG8gcmVvcmRlciB0aGlzIGVhcmxpZXIgaW4gdGhlIHNlcmllcy4gQW5kIEkn bQo+ID4gd29uZGVyaW5nIHdoeSB5b3UgZGlkbid0IHJlcGxhY2UgYWxsIG9jY3VyZW5jZXMgb2Yg dGhlIF9pc19ib3VuZCgpCj4gPiBmdW5jdGlvbi4gV2l0aCB0aGUgY29uc2lzdGVudCBtYXN0ZXIg c3RhdGUgY2hlY2sgd2UncmUgZG9pbmcgd2l0aCB0aGlzIEkKPiA+IGRvbid0IHRoaW5rIGFueSBv ZiB0aGUgZmJkZXYgY2hlY2tpbmcgaXMgc3RpbGwgbmVlZGVkLiBQbHVzIGxvb2tpbmcgYXQKPiA+ IGNydGMtPnByaW1hcnktPmZiIHdpdGhvdXQgYW55IGxvY2tzIGlzIHJhY3ksIHNvIHdvdWxkIGJl IGdvb2QgdG8gZGl0Y2gKPiA+IHRoYXQgaGFjay4KPiAKPiBfaXNfYm91bmQoKSBpcyB1c2VkIGlu IGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudCgpIHRvIGRlY2lkZSBvbgo+IGRlbGF5ZWQgaG90 cGx1Zy4gVGhlIG1hc3RlciBsb2NrIHdvbid0IGhlbHAgaGVyZS4gSSBoYXZlIHN0dWRpZWQKPiBk cm1fZmJfaGVscGVyIGZvciAyIHllYXJzIG5vdywgYW5kIEkgc3RpbGwgdGhpbmsgaXQgaXMgY29u dm9sdXRlZCBhbmQKPiBkaWZmaWN1bHQgdG8gZ3Jhc3AgaW4gcGxhY2VzLiBTbyBJIGtlcHQgdGhp cyBvbmUgY2FsbCBzaXRlLiBJJ20gdmFyeSBvZgo+IG1ha2luZyB1bnJlbGF0ZWQgY2hhbmdlcyBp biB0aGlzIHNlcmllcy4KCkhtLCB3aHkgd291bGQgaXQgbm90IHdvcmsgZm9yIHRoZSBob3RwbHVn IGNhc2U/IF9pc19ib3VuZCBhbHJlYWR5IGNoZWNrcwpkZXYtPm1hc3RlciAoYnV0IHdpdGggcmFj ZXMsIHVubGlrZSB0aGlzIGhlcmUpLiBBbmQgdGhlIG90aGVyIGNoZWNrcyBhcmUKdmFyaW91cyBs ZXZlbHMgb2YgY2FyZ28tY3VsdGluZy4gZGV2LT5tYXN0ZXIgaXMgKHdlbGwsIGhhcyBiZWNvbWUg dGhyb3VnaApyZXRyb2ZpdHRpbmcpIHRoZSAid2hvIG93bnMgdGhlIGRpc3BsYXkiIHRyYWNraW5n LCBJIHRoaW5rIGZ1bGx5CnN0YW5kYXJkaXppbmcgb24gdGhhdCBtYWtlcyBzZW5zZS4gVGhlIG9u bHkgY2FzZSB3aGVyZSB0aGVyZSdzIGEKZGlmZmVyZW5jZSBpcyBpZjoKLSBzb21lIGNvbXBvc2l0 b3IgZHJvcHBlZCBtYXN0ZXIKLSBidXQgZGlkbid0IGRpc2FibGUgaXQncyBmcmFtZWJ1ZmZlcnMK V2UgYWN0dWFsbHkgd2FudCB0aGF0IGZvciBzbW9vdGggdnQgc3dpdGNoaW5nLCBzbyB0aGF0IHRo ZSBuZXcgY29tcG9zaXRvcgpjb3VsZCB0YWtlIG92ZXIgaW4gYSB0cmFuc2l0aW9uLiBIYXZpbmcg YSBzcGVjaWFsIGNhc2Ugd2l0aCBmYmRldiB3aGVyZQp0aGUgY29tcG9zaXRvciBoYXMgdG8gZGlz YWJsZSBhbGwgaXRzIGZiIG9yIGZiY29uIHdvbid0IHRha2Ugb3ZlciBmZWVscyBhCmJpdCBpcmt5 LgotRGFuaWVsCgo+IFRoZSByZWFzb24gSSBpbmNsdWRlZCB0aGlzIHBhdGNoIGlzIGJlY2F1c2Ug aXQncyB1c2VkIHdpdGggdGhlCj4gYm9vdHNwbGFzaCBleGFtcGxlIHN1cHBvcnQgY29kZS4gSSBj YW4gbW92ZSB0aGUgcGF0Y2ggZWFybGllciBpbiB0aGUgc2VyaWVzLgo+IAo+IE5vcmFsZi4KPiAK PiA+IC1EYW5pZWwKPiA+IAo+ID4+IC0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGgu YyAgICAgIHwgMjAgKysrKysrKysrKysrKysKPiA+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9mYl9o ZWxwZXIuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggIHwgIDIgKysKPiA+PiAgMyBmaWxlcyBjaGFuZ2Vk LCA1OCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXV0aC5j Cj4gPj4gaW5kZXggMTY2OWM0MmM0MGVkLi5kYjE5OTgwN2I3ZGMgMTAwNjQ0Cj4gPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdXRoLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F1dGguYwo+ID4+IEBAIC0zNjgsMyArMzY4LDIzIEBAIHZvaWQgZHJtX21hc3Rlcl9wdXQoc3Ry dWN0IGRybV9tYXN0ZXIgKiptYXN0ZXIpCj4gPj4gIAkqbWFzdGVyID0gTlVMTDsKPiA+PiAgfQo+ ID4+ICBFWFBPUlRfU1lNQk9MKGRybV9tYXN0ZXJfcHV0KTsKPiA+PiArCj4gPj4gKy8qIFVzZWQg YnkgZHJtX2NsaWVudCBhbmQgZHJtX2ZiX2hlbHBlciAqLwo+ID4+ICtib29sIGRybV9tYXN0ZXJf aW50ZXJuYWxfYWNxdWlyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4+ICt7Cj4gPj4gKwlt dXRleF9sb2NrKCZkZXYtPm1hc3Rlcl9tdXRleCk7Cj4gPj4gKwlpZiAoZGV2LT5tYXN0ZXIpIHsK PiA+PiArCQltdXRleF91bmxvY2soJmRldi0+bWFzdGVyX211dGV4KTsKPiA+PiArCQlyZXR1cm4g ZmFsc2U7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIHRydWU7Cj4gPj4gK30KPiA+PiAr RVhQT1JUX1NZTUJPTChkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUpOwo+ID4+ICsKPiA+PiAr LyogVXNlZCBieSBkcm1fY2xpZW50IGFuZCBkcm1fZmJfaGVscGVyICovCj4gPj4gK3ZvaWQgZHJt X21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gK3sK PiA+PiArCW11dGV4X3VubG9jaygmZGV2LT5tYXN0ZXJfbXV0ZXgpOwo+ID4+ICt9Cj4gPj4gK0VY UE9SVF9TWU1CT0woZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKTsKPiA+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMKPiA+PiBpbmRleCA0YTA3M2NkNGU0MjMuLjlmMjUzZmNmM2Y3OSAxMDA2NDQK PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4+IEBAIC00MSw2ICs0MSw4IEBACj4gPj4g ICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gPj4gICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pYy5oPgo+ID4+ICAKPiA+PiArI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgo+ID4+ICsK PiA+PiAgc3RhdGljIGJvb2wgZHJtX2ZiZGV2X2VtdWxhdGlvbiA9IHRydWU7Cj4gPj4gIG1vZHVs ZV9wYXJhbV9uYW1lZChmYmRldl9lbXVsYXRpb24sIGRybV9mYmRldl9lbXVsYXRpb24sIGJvb2ws IDA2MDApOwo+ID4+ICBNT0RVTEVfUEFSTV9ERVNDKGZiZGV2X2VtdWxhdGlvbiwKPiA+PiBAQCAt MjM1LDcgKzIzNywxMiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5s b2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiA+PiAgCQlyZXR1cm4gMDsK PiA+PiAgCj4gPj4gIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ID4+IC0JcmV0ID0g ZHJtX2NsaWVudF9tb2Rlc2V0c19jb21taXQoZmJfaGVscGVyLT5kZXYsIGZiX2hlbHBlci0+bW9k ZXNldHMpOwo+ID4+ICsJaWYgKGRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShmYl9oZWxwZXIt PmRldikpIHsKPiA+PiArCQlyZXQgPSBkcm1fY2xpZW50X21vZGVzZXRzX2NvbW1pdChmYl9oZWxw ZXItPmRldiwgZmJfaGVscGVyLT5tb2Rlc2V0cyk7Cj4gPj4gKwkJZHJtX21hc3Rlcl9pbnRlcm5h bF9yZWxlYXNlKGZiX2hlbHBlci0+ZGV2KTsKPiA+PiArCX0gZWxzZSB7Cj4gPj4gKwkJcmV0ID0g LUVCVVNZOwo+ID4+ICsJfQo+ID4+ICAKPiA+PiAgCWRvX2RlbGF5ZWQgPSBmYl9oZWxwZXItPmRl bGF5ZWRfaG90cGx1ZzsKPiA+PiAgCWlmIChkb19kZWxheWVkKQo+ID4+IEBAIC0zMzIsMTMgKzMz OSwxNiBAQCBzdGF0aWMgc3RydWN0IHN5c3JxX2tleV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jl c3RvcmVfb3AgPSB7IH07Cj4gPj4gIHN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfZHBtcyhzdHJ1 Y3QgZmJfaW5mbyAqaW5mbywgaW50IGRwbXNfbW9kZSkKPiA+PiAgewo+ID4+ICAJc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiA+PiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPiA+PiAgCj4gPj4gIAkvKgo+ID4+ICAJICogRm9y IGVhY2ggQ1JUQyBpbiB0aGlzIGZiLCB0dXJuIHRoZSBjb25uZWN0b3JzIG9uL29mZi4KPiA+PiAg CSAqLwo+ID4+ICAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiA+PiAtCWlmIChkcm1f ZmJfaGVscGVyX2lzX2JvdW5kKGZiX2hlbHBlcikpCj4gPj4gLQkJZHJtX2NsaWVudF9tb2Rlc2V0 c19kcG1zKGZiX2hlbHBlci0+ZGV2LCBmYl9oZWxwZXItPm1vZGVzZXRzLCBkcG1zX21vZGUpOwo+ ID4+ICsJaWYgKGRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKSB7Cj4gPj4gKwkJZHJt X2NsaWVudF9tb2Rlc2V0c19kcG1zKGRldiwgZmJfaGVscGVyLT5tb2Rlc2V0cywgZHBtc19tb2Rl KTsKPiA+PiArCQlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKPiA+PiArCX0KPiA+ PiAgCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiA+PiAgfQo+ID4+ICAKPiA+PiBA QCAtMTA5Nyw2ICsxMTA3LDcgQEAgc3RhdGljIGludCBzZXRjbWFwX2F0b21pYyhzdHJ1Y3QgZmJf Y21hcCAqY21hcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gPj4gIGludCBkcm1fZmJfaGVscGVy X3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ID4+ ICB7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ ID4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ID4+ICAJaW50 IHJldDsKPiA+PiAgCj4gPj4gIAlpZiAob29wc19pbl9wcm9ncmVzcykKPiA+PiBAQCAtMTEwNCw5 ICsxMTE1LDkgQEAgaW50IGRybV9mYl9oZWxwZXJfc2V0Y21hcChzdHJ1Y3QgZmJfY21hcCAqY21h cCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gPj4gIAo+ID4+ICAJbXV0ZXhfbG9jaygmZmJfaGVs cGVyLT5sb2NrKTsKPiA+PiAgCj4gPj4gLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJf aGVscGVyKSkgewo+ID4+ICsJaWYgKCFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoZGV2KSkg ewo+ID4+ICAJCXJldCA9IC1FQlVTWTsKPiA+PiAtCQlnb3RvIG91dDsKPiA+PiArCQlnb3RvIHVu bG9jazsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gIAlpZiAoaW5mby0+Zml4LnZpc3VhbCA9PSBGQl9W SVNVQUxfVFJVRUNPTE9SKQo+ID4+IEBAIC0xMTE2LDcgKzExMjcsOCBAQCBpbnQgZHJtX2ZiX2hl bHBlcl9zZXRjbWFwKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykK PiA+PiAgCWVsc2UKPiA+PiAgCQlyZXQgPSBzZXRjbWFwX2xlZ2FjeShjbWFwLCBpbmZvKTsKPiA+ PiAgCj4gPj4gLW91dDoKPiA+PiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwo+ ID4+ICt1bmxvY2s6Cj4gPj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPj4g IAo+ID4+ICAJcmV0dXJuIHJldDsKPiA+PiBAQCAtMTEzNiwxMSArMTE0OCwxMyBAQCBpbnQgZHJt X2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCwK PiA+PiAgCQkJdW5zaWduZWQgbG9uZyBhcmcpCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPj4g IAlpbnQgcmV0ID0gMDsKPiA+PiAgCj4gPj4gIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2sp Owo+ID4+IC0JaWYgKCFkcm1fZmJfaGVscGVyX2lzX2JvdW5kKGZiX2hlbHBlcikpIHsKPiA+PiAr Cj4gPj4gKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKSB7Cj4gPj4gIAkJ cmV0ID0gLUVCVVNZOwo+ID4+ICAJCWdvdG8gdW5sb2NrOwo+ID4+ICAJfQo+ID4+IEBAIC0xMTc3 LDEzICsxMTkxLDE1IEBAIGludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVjdCBmYl9pbmZvICpp bmZvLCB1bnNpZ25lZCBpbnQgY21kLAo+ID4+ICAJCX0KPiA+PiAgCj4gPj4gIAkJcmV0ID0gMDsK PiA+PiAtCQlnb3RvIHVubG9jazsKPiA+PiArCQlicmVhazsKPiA+PiAgCWRlZmF1bHQ6Cj4gPj4g IAkJcmV0ID0gLUVOT1RUWTsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gKwlkcm1fbWFzdGVyX2ludGVy bmFsX3JlbGVhc2UoZGV2KTsKPiA+PiAgdW5sb2NrOgo+ID4+ICAJbXV0ZXhfdW5sb2NrKCZmYl9o ZWxwZXItPmxvY2spOwo+ID4+ICsKPiA+PiAgCXJldHVybiByZXQ7Cj4gPj4gIH0KPiA+PiAgRVhQ T1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2lvY3RsKTsKPiA+PiBAQCAtMTQyNiwxNSArMTQ0Miwx OSBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9wYW5fZGlzcGxheShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmlu Zm8gKnZhciwKPiA+PiAgCQlyZXR1cm4gLUVCVVNZOwo+ID4+ICAKPiA+PiAgCW11dGV4X2xvY2so JmZiX2hlbHBlci0+bG9jayk7Cj4gPj4gLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJf aGVscGVyKSkgewo+ID4+IC0JCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiA+PiAt CQlyZXR1cm4gLUVCVVNZOwo+ID4+ICsKPiA+PiArCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9h Y3F1aXJlKGRldikpIHsKPiA+PiArCQlyZXQgPSAtRUJVU1k7Cj4gPj4gKwkJZ290byB1bmxvY2s7 Cj4gPj4gIAl9Cj4gPj4gIAo+ID4+ICAJaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChk ZXYpKQo+ID4+ICAJCXJldCA9IHBhbl9kaXNwbGF5X2F0b21pYyh2YXIsIGluZm8pOwo+ID4+ICAJ ZWxzZQo+ID4+ICAJCXJldCA9IHBhbl9kaXNwbGF5X2xlZ2FjeSh2YXIsIGluZm8pOwo+ID4+ICsK PiA+PiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwo+ID4+ICt1bmxvY2s6Cj4g Pj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gPj4gIAo+ID4+ICAJcmV0dXJu IHJldDsKPiA+PiBAQCAtMTQ1MSw2ICsxNDcxLDcgQEAgc3RhdGljIGludCBkcm1fZmJfaGVscGVy X3NpbmdsZV9mYl9wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ID4+ICAJ aW50IHJldCA9IDA7Cj4gPj4gIAlpbnQgY3J0Y19jb3VudCA9IDA7Cj4gPj4gIAlzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+ID4+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ID4+ICAJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFj ZV9zaXplIHNpemVzOwo+ID4+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ PiAgCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0Owo+ID4+IEBAIC0xNTkzLDggKzE2MTQs MTAgQEAgc3RhdGljIGludCBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ID4+ICAJCURSTV9JTkZPKCJDYW5ub3QgZmluZCBhbnkg Y3J0YyBvciBzaXplc1xuIik7Cj4gPj4gIAo+ID4+ICAJCS8qIEZpcnN0IHRpbWU6IGRpc2FibGUg YWxsIGNydGMncy4uICovCj4gPj4gLQkJaWYgKCFmYl9oZWxwZXItPmRlZmVycmVkX3NldHVwICYm ICFSRUFEX09OQ0UoZmJfaGVscGVyLT5kZXYtPm1hc3RlcikpCj4gPj4gLQkJCWRybV9jbGllbnRf bW9kZXNldHNfY29tbWl0KGZiX2hlbHBlci0+ZGV2LCBmYl9oZWxwZXItPm1vZGVzZXRzKTsKPiA+ PiArCQlpZiAoIWZiX2hlbHBlci0+ZGVmZXJyZWRfc2V0dXAgJiYgZHJtX21hc3Rlcl9pbnRlcm5h bF9hY3F1aXJlKGRldikpIHsKPiA+PiArCQkJZHJtX2NsaWVudF9tb2Rlc2V0c19jb21taXQoZGV2 LCBmYl9oZWxwZXItPm1vZGVzZXRzKTsKPiA+PiArCQkJZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxl YXNlKGRldik7Cj4gPj4gKwkJfQo+ID4+ICAJCXJldHVybiAtRUFHQUlOOwo+ID4+ICAJfQo+ID4+ ICAKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJp dmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCj4gPj4gaW5kZXggMjUxZDY3ZTA0YzJkLi42ZDVk MTE4NGMwODQgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5o Cj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCj4gPj4gQEAgLTkxLDYg KzkxLDggQEAgaW50IGRybV9kcm9wbWFzdGVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gPj4gIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gPj4g IGludCBkcm1fbWFzdGVyX29wZW4oc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwo+ID4+ICB2 b2lkIGRybV9tYXN0ZXJfcmVsZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gPj4g K2Jvb2wgZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owo+ID4+ICt2b2lkIGRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiA+PiAgCj4gPj4gIC8qIGRybV9zeXNmcy5jICovCj4gPj4gIGV4dGVybiBzdHJ1 Y3QgY2xhc3MgKmRybV9jbGFzczsKPiA+PiAtLSAKPiA+PiAyLjIwLjEKPiA+Pgo+ID4gCgotLSAK RGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVs