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: Tue, 16 Apr 2019 09:59:32 +0200 Message-ID: <20190416075931.GS2665@phenom.ffwll.local> References: <20190407165243.54043-1-noralf@tronnes.org> <20190407165243.54043-3-noralf@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 3552889AA2 for ; Tue, 16 Apr 2019 07:59:36 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id i13so6353533edf.11 for ; Tue, 16 Apr 2019 00:59:36 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190407165243.54043-3-noralf@tronnes.org> 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 T24gU3VuLCBBcHIgMDcsIDIwMTkgYXQgMDY6NTI6MzNQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IGRybV9mYl9oZWxwZXJfaXNfYm91bmQoKSBpcyB1c2VkIHRvIGNoZWNrIGlmIERS TSB1c2Vyc3BhY2UgaXMgaW4gY29udHJvbC4KPiBUaGlzIGlzIGRvbmUgYnkgbG9va2luZyBhdCB0 aGUgZmIgb24gdGhlIHByaW1hcnkgcGxhbmUuIEJ5IHRoZSB0aW1lCj4gZmItaGVscGVyIGdldHMg YXJvdW5kIHRvIGNvbW1pdHRpbmcsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgZmFjdHMgaGF2ZQo+ IGNoYW5nZWQuCj4gCj4gQXZvaWQgdGhpcyByYWNlIGJ5IGhvbGRpbmcgdGhlIGRybV9kZXZpY2Ut Pm1hc3Rlcl9tdXRleCBsb2NrIHdoaWxlCj4gY29tbWl0dGluZy4gV2hlbiBEUk0gdXNlcnNwYWNl IGRvZXMgaXRzIGZpcnN0IG9wZW4sIGl0IHdpbGwgbm93IHdhaXQKPiB1bnRpbCBmYi1oZWxwZXIg aXMgZG9uZS4gVGhlIGhlbHBlciB3aWxsIHN0YXkgYXdheSBpZiB0aGVyZSdzIGEgbWFzdGVyLgo+ IAo+IExvY2tpbmcgcnVsZTogQWx3YXlzIHRha2UgdGhlIGZiLWhlbHBlciBsb2NrIGZpcnN0Lgo+ IAo+IHYyOgo+IC0gUmVtb3ZlIGRybV9mYl9oZWxwZXJfaXNfYm91bmQoKSAoRGFuaWVsIFZldHRl cikKPiAtIE5vIG5lZWQgdG8gY2hlY2sgZmJfaGVscGVyLT5kZXYtPm1hc3RlciBpbgo+ICAgZHJt X2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoKSwgcmVzdG9yZV9mYmRldl9tb2RlKCkgaGFzIHRo ZSBjaGVjay4KPiAKPiBTdWdnZXN0ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+Cj4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5l cy5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXV0aC5jICAgICAgfCAyMCArKysr KysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgOTAgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCAg fCAgMiArCj4gIDMgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXV0aC5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9hdXRoLmMKPiBpbmRleCAxNjY5YzQyYzQwZWQuLmRiMTk5ODA3YjdkYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXV0aC5jCj4gQEAgLTM2OCwzICszNjgsMjMgQEAgdm9pZCBkcm1fbWFzdGVy X3B1dChzdHJ1Y3QgZHJtX21hc3RlciAqKm1hc3RlcikKPiAgCSptYXN0ZXIgPSBOVUxMOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woZHJtX21hc3Rlcl9wdXQpOwo+ICsKPiArLyogVXNlZCBieSBkcm1f Y2xpZW50IGFuZCBkcm1fZmJfaGVscGVyICovCj4gK2Jvb2wgZHJtX21hc3Rlcl9pbnRlcm5hbF9h Y3F1aXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCW11dGV4X2xvY2soJmRldi0+ bWFzdGVyX211dGV4KTsKPiArCWlmIChkZXYtPm1hc3Rlcikgewo+ICsJCW11dGV4X3VubG9jaygm ZGV2LT5tYXN0ZXJfbXV0ZXgpOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlyZXR1 cm4gdHJ1ZTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWly ZSk7Cj4gKwo+ICsvKiBVc2VkIGJ5IGRybV9jbGllbnQgYW5kIGRybV9mYl9oZWxwZXIgKi8KPiAr dm9pZCBkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiArewo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPm1hc3Rlcl9tdXRleCk7Cj4gK30KPiArRVhQT1JU X1NZTUJPTChkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxw ZXIuYwo+IGluZGV4IDg0NzkxZGQ0YTkwZC4uYTZiZTA5YWU4OTliIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2ZiX2hlbHBlci5jCj4gQEAgLTQ0LDYgKzQ0LDcgQEAKPiAgCj4gICNpbmNsdWRlICJkcm1fY3J0 Y19pbnRlcm5hbC5oIgo+ICAjaW5jbHVkZSAiZHJtX2NydGNfaGVscGVyX2ludGVybmFsLmgiCj4g KyNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKPiAgCj4gIHN0YXRpYyBib29sIGRybV9mYmRldl9l bXVsYXRpb24gPSB0cnVlOwo+ICBtb2R1bGVfcGFyYW1fbmFtZWQoZmJkZXZfZW11bGF0aW9uLCBk cm1fZmJkZXZfZW11bGF0aW9uLCBib29sLCAwNjAwKTsKPiBAQCAtNTA5LDcgKzUxMCw3IEBAIHN0 YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyKQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCByZXN0b3Jl X2ZiZGV2X21vZGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiArc3RhdGljIGlu dCByZXN0b3JlX2ZiZGV2X21vZGVfZm9yY2Uoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cikKCkJpa2VzaGVkOiB1c3VhbGx5IHRoZSBmdW5jdGlvbiB2YXJpYW50IHRoYXQncyBydW4gd2l0 aCBsb2NrcyBhbHJlYWR5IHRha2VuCmlzIGNhbGxlZCBfbG9ja2VkIG9yIGhhcyBhIF9fIHByZWZp eC4gX2ZvcmNlIGZlZWxzIGEgYml0IG1pc3BsYWNlZC4KPiAgewo+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ICAKPiBAQCAtNTE5LDYgKzUyMCwyMSBAQCBzdGF0 aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy KQo+ICAJCXJldHVybiByZXN0b3JlX2ZiZGV2X21vZGVfbGVnYWN5KGZiX2hlbHBlcik7Cj4gIH0K PiAgCj4gK3N0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXIt PmRldjsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKCFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVp cmUoZGV2KSkKPiArCQlyZXR1cm4gLUVCVVNZOwo+ICsKPiArCXJldCA9IHJlc3RvcmVfZmJkZXZf bW9kZV9mb3JjZShmYl9oZWxwZXIpOwo+ICsKPiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFz ZShkZXYpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBkcm1fZmJf aGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZCAtIHJlc3RvcmUgZmJkZXYgY29uZmln dXJhdGlvbgo+ICAgKiBAZmJfaGVscGVyOiBkcml2ZXItYWxsb2NhdGVkIGZiZGV2IGhlbHBlciwg Y2FuIGJlIE5VTEwKPiBAQCAtNTU2LDM0ICs1NzIsNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9yZXN0 b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikK PiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3Vu bG9ja2VkKTsKPiAgCj4gLXN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfaXNfYm91bmQoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGZiX2hlbHBlci0+ZGV2Owo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+IC0JaW50IGJv dW5kID0gMCwgY3J0Y3NfYm91bmQgPSAwOwo+IC0KPiAtCS8qCj4gLQkgKiBTb21ldGltZXMgdXNl ciBzcGFjZSB3YW50cyBldmVyeXRoaW5nIGRpc2FibGVkLCBzbyBkb24ndCBzdGVhbCB0aGUKPiAt CSAqIGRpc3BsYXkgaWYgdGhlcmUncyBhIG1hc3Rlci4KPiAtCSAqLwo+IC0JaWYgKFJFQURfT05D RShkZXYtPm1hc3RlcikpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCWRybV9mb3JfZWFjaF9j cnRjKGNydGMsIGRldikgewo+IC0JCWRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBOVUxM KTsKPiAtCQlpZiAoY3J0Yy0+cHJpbWFyeS0+ZmIpCj4gLQkJCWNydGNzX2JvdW5kKys7Cj4gLQkJ aWYgKGNydGMtPnByaW1hcnktPmZiID09IGZiX2hlbHBlci0+ZmIpCj4gLQkJCWJvdW5kKys7Cj4g LQkJZHJtX21vZGVzZXRfdW5sb2NrKCZjcnRjLT5tdXRleCk7Cj4gLQl9Cj4gLQo+IC0JaWYgKGJv dW5kIDwgY3J0Y3NfYm91bmQpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCXJldHVybiB0cnVl Owo+IC19Cj4gLQo+ICAjaWZkZWYgQ09ORklHX01BR0lDX1NZU1JRCj4gIC8qCj4gICAqIHJlc3Rv cmUgZmJjb24gZGlzcGxheSBmb3IgYWxsIGttcyBkcml2ZXIncyB1c2luZyB0aGlzIGhlbHBlciwg dXNlZCBmb3Igc3lzcnEKPiBAQCAtNjA0LDcgKzU5Miw3IEBAIHN0YXRpYyBib29sIGRybV9mYl9o ZWxwZXJfZm9yY2Vfa2VybmVsX21vZGUodm9pZCkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCW11 dGV4X2xvY2soJmhlbHBlci0+bG9jayk7Cj4gLQkJcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlKGhl bHBlcik7Cj4gKwkJcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlX2ZvcmNlKGhlbHBlcik7CgpJJ2Qg bGVhdmUgdGhpcyBhcy1pcywgYmVjYXVzZToKYSkgSSdtIHRvbyBsYXp5IHRvIHJldmlldyB0aGUg bG9ja2luZyBvZiBvdXIgb3Blbi9jbG9zZSBjYWxscyB0byBjb252aW5jZQpteXNlbGYgdGhhdCBs YXN0Y2xvc2UgY2FuJ3QgcmFjZSB3aXRoIHRoZSBuZXh0IG9wZW4KYikgaXQgd29uJ3QgaHVydApj KSBsZWF2ZXMgdGhlIGRvb3Igb3BlbiB0byBlYXNpbHkgbWFrZSBvdXIgb3Blbi9jbG9zZSBtb3Jl IGNvbmN1cnJlbnQgaW4KdGhlIGZ1dHVyZQoKPiAgCQlpZiAocmV0KQo+ICAJCQllcnJvciA9IHRy dWU7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZoZWxwZXItPmxvY2spOwo+IEBAIC02NjMsMjAgKzY1MSwy MiBAQCBzdGF0aWMgdm9pZCBkcG1zX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyLCBpbnQgZHBtc19tb2RlKQo+ICBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2RwbXMoc3Ry dWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZmJfaGVscGVyLT5kZXY7Cj4gIAo+ICAJLyoKPiAgCSAqIEZvciBlYWNoIENSVEMgaW4gdGhp cyBmYiwgdHVybiB0aGUgY29ubmVjdG9ycyBvbi9vZmYuCj4gIAkgKi8KPiAgCW11dGV4X2xvY2so JmZiX2hlbHBlci0+bG9jayk7Cj4gLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVs cGVyKSkgewo+IC0JCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiAtCQlyZXR1cm47 Cj4gLQl9Cj4gKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKQo+ICsJCWdv dG8gdW5sb2NrOwo+ICAKPiAtCWlmIChkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoZmJfaGVs cGVyLT5kZXYpKQo+ICsJaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkZXYpKQo+ICAJ CXJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoZmJfaGVscGVyLCBkcG1zX21vZGUgPT0gRFJNX01P REVfRFBNU19PTik7Cj4gIAllbHNlCj4gIAkJZHBtc19sZWdhY3koZmJfaGVscGVyLCBkcG1zX21v ZGUpOwo+ICsKPiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwo+ICt1bmxvY2s6 Cj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gIH0KPiAgCj4gQEAgLTE1MDks NiArMTQ5OSw3IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNt YXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICBpbnQgZHJtX2ZiX2hlbHBlcl9zZXRjbWFwKHN0 cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgewo+ICAJc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPiAgCWludCByZXQ7Cj4gIAo+ICAJaWYgKG9vcHNf aW5fcHJvZ3Jlc3MpCj4gQEAgLTE1MTYsOSArMTUwNyw5IEBAIGludCBkcm1fZmJfaGVscGVyX3Nl dGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICAKPiAg CW11dGV4X2xvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gIAo+IC0JaWYgKCFkcm1fZmJfaGVscGVy X2lzX2JvdW5kKGZiX2hlbHBlcikpIHsKPiArCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1 aXJlKGRldikpIHsKPiAgCQlyZXQgPSAtRUJVU1k7Cj4gLQkJZ290byBvdXQ7Cj4gKwkJZ290byB1 bmxvY2s7Cj4gIAl9Cj4gIAo+ICAJaWYgKGluZm8tPmZpeC52aXN1YWwgPT0gRkJfVklTVUFMX1RS VUVDT0xPUikKPiBAQCAtMTUyOCw3ICsxNTE5LDggQEAgaW50IGRybV9mYl9oZWxwZXJfc2V0Y21h cChzdHJ1Y3QgZmJfY21hcCAqY21hcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAllbHNlCj4g IAkJcmV0ID0gc2V0Y21hcF9sZWdhY3koY21hcCwgaW5mbyk7Cj4gIAo+IC1vdXQ6Cj4gKwlkcm1f bWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKPiArdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2Nr KCZmYl9oZWxwZXItPmxvY2spOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gQEAgLTE1NDgsMTIgKzE1 NDAsMTMgQEAgaW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVu c2lnbmVkIGludCBjbWQsCj4gIAkJCXVuc2lnbmVkIGxvbmcgYXJnKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOwo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ICAJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9z ZXQ7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gIAlpbnQgcmV0ID0gMDsKPiAgCj4gIAlt dXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+IC0JaWYgKCFkcm1fZmJfaGVscGVyX2lzX2Jv dW5kKGZiX2hlbHBlcikpIHsKPiArCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRl dikpIHsKPiAgCQlyZXQgPSAtRUJVU1k7Cj4gIAkJZ290byB1bmxvY2s7Cj4gIAl9Cj4gQEAgLTE1 OTEsMTEgKzE1ODQsMTIgQEAgaW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8g KmluZm8sIHVuc2lnbmVkIGludCBjbWQsCj4gIAkJfQo+ICAKPiAgCQlyZXQgPSAwOwo+IC0JCWdv dG8gdW5sb2NrOwo+ICsJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlyZXQgPSAtRU5PVFRZOwo+ ICAJfQo+ICAKPiArCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwo+ICB1bmxvY2s6 Cj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gIAlyZXR1cm4gcmV0Owo+IEBA IC0xODQ3LDE1ICsxODQxLDE4IEBAIGludCBkcm1fZmJfaGVscGVyX3Bhbl9kaXNwbGF5KHN0cnVj dCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAo+ICAJCXJldHVybiAtRUJVU1k7Cj4gIAo+ICAJbXV0 ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiAtCWlmICghZHJtX2ZiX2hlbHBlcl9pc19ib3Vu ZChmYl9oZWxwZXIpKSB7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+IC0J CXJldHVybiAtRUJVU1k7Cj4gKwlpZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYp KSB7Cj4gKwkJcmV0ID0gLUVCVVNZOwo+ICsJCWdvdG8gdW5sb2NrOwo+ICAJfQo+ICAKPiAgCWlm IChkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoZGV2KSkKPiAgCQlyZXQgPSBwYW5fZGlzcGxh eV9hdG9taWModmFyLCBpbmZvKTsKPiAgCWVsc2UKPiAgCQlyZXQgPSBwYW5fZGlzcGxheV9sZWdh Y3kodmFyLCBpbmZvKTsKPiArCj4gKwlkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsK PiArdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ICAKPiAgCXJl dHVybiByZXQ7Cj4gQEAgLTIwMTQsNyArMjAxMSw3IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBl cl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCQlE Uk1fSU5GTygiQ2Fubm90IGZpbmQgYW55IGNydGMgb3Igc2l6ZXNcbiIpOwo+ICAKPiAgCQkvKiBG aXJzdCB0aW1lOiBkaXNhYmxlIGFsbCBjcnRjJ3MuLiAqLwo+IC0JCWlmICghZmJfaGVscGVyLT5k ZWZlcnJlZF9zZXR1cCAmJiAhUkVBRF9PTkNFKGZiX2hlbHBlci0+ZGV2LT5tYXN0ZXIpKQo+ICsJ CWlmICghZmJfaGVscGVyLT5kZWZlcnJlZF9zZXR1cCkKPiAgCQkJcmVzdG9yZV9mYmRldl9tb2Rl KGZiX2hlbHBlcik7CgpJIHRoaW5rIHdlIG5lZWQgdG8gcmV0dXJuIHRoZSBlcnJubyBoZXJlLCBz aW5jZSB3aXRob3V0IHRoYXQgdGhlIGhpZ2hlcgpsZXZlbHMgd29uJ3QgcmVwcm9iZSBjb3JyZWN0 bHkuIFBsdXMgd2UgbmVlZCB0byByZW1hcCAtRUJVU1kgdG8gLUVBR0FJTgoob3IgY2hhbmdlIHRo ZSBjaGVjayBpbiBfX2RybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWdfYW5kX3VubG9jayB0byBh bHNvCnJldHJ5IG9uIC1FQlVTWSkuCgo+ICAJCXJldHVybiAtRUFHQUlOOwo+ICAJfQo+IEBAIC0y ODQyLDYgKzI4MzksNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25m aWcpOwo+ICAgKi8KPiAgaW50IGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudChzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZmJfaGVscGVyLT5kZXY7Cj4gIAlpbnQgZXJyID0gMDsKPiAgCj4gIAlpZiAoIWRybV9mYmRldl9l bXVsYXRpb24gfHwgIWZiX2hlbHBlcikKPiBAQCAtMjg1NCwxMiArMjg1MiwxNCBAQCBpbnQgZHJt X2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIp Cj4gIAkJcmV0dXJuIGVycjsKPiAgCX0KPiAgCj4gLQlpZiAoIWZiX2hlbHBlci0+ZmIgfHwgIWRy bV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewo+ICsJaWYgKCFmYl9oZWxwZXItPmZi IHx8ICFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoZGV2KSkgewo+ICAJCWZiX2hlbHBlci0+ ZGVsYXllZF9ob3RwbHVnID0gdHJ1ZTsKPiAgCQltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9j ayk7Cj4gIAkJcmV0dXJuIGVycjsKPiAgCX0KPiAgCj4gKwlkcm1fbWFzdGVyX2ludGVybmFsX3Jl bGVhc2UoZGV2KTsKPiArCj4gIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+ICAKPiAgCWRybV9zZXR1 cF9jcnRjcyhmYl9oZWxwZXIsIGZiX2hlbHBlci0+ZmItPndpZHRoLCBmYl9oZWxwZXItPmZiLT5o ZWlnaHQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKPiBpbmRleCBkOWE0ODNhNWZjZTAuLjNlZTk3 Yzk5OThhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKPiBAQCAtOTEsNiArOTEsOCBAQCBp bnQgZHJtX2Ryb3BtYXN0ZXJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAgCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAgaW50IGRybV9tYXN0ZXJf b3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gIHZvaWQgZHJtX21hc3Rlcl9yZWxl YXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiArYm9vbCBkcm1fbWFzdGVyX2ludGVy bmFsX2FjcXVpcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3ZvaWQgZHJtX21hc3Rlcl9p bnRlcm5hbF9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAKPiAgLyogZHJtX3N5 c2ZzLmMgKi8KPiAgZXh0ZXJuIHN0cnVjdCBjbGFzcyAqZHJtX2NsYXNzOwoKV2l0aCB0aGUgbml0 cyBhZGRyZXNzZWQ6CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBm ZndsbC5jaD4KCj4gLS0gCj4gMi4yMC4xCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4