From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 08/35] drm: Protect dev->filelist with its own mutex Date: Wed, 27 Apr 2016 10:17:34 +0200 Message-ID: <20160427081733.GX2558@phenom.ffwll.local> References: <1461691808-12414-1-git-send-email-daniel.vetter@ffwll.ch> <1461691808-12414-9-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC56A6EA23 for ; Wed, 27 Apr 2016 08:17:38 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id r12so10561864wme.0 for ; Wed, 27 Apr 2016 01:17:38 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1461691808-12414-9-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: DRI Development Cc: Alex Deucher , Daniel Vetter , Intel Graphics Development , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMjYsIDIwMTYgYXQgMDc6Mjk6NDFQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBhbWRncHUgZ2FpbmVkIGRldi0+c3RydWN0X211dGV4IHVzYWdlLCBhbmQgdGhhdCdz IGJlY2F1c2UgaXQncyB3YWxraW5nCj4gdGhlIGRldi0+ZmlsZWxpc3QgbGlzdC4gUHJvdGVjdCB0 aGF0IGxpc3Qgd2l0aCBpdCdzIG93biBsb2NrIHRvIHRha2UKPiBvbmUgbW9yZSBzdGVwIHRvd2Fy ZHMgZ2V0dGluZyByaWQgb2Ygc3RydWN0X211dGV4IHVzYWdlIGluIGRyaXZlcnMKPiBvbmNlIGFu ZCBmb3IgYWxsLgo+IAo+IFdoaWxlIGRvaW5nIHRoZSBjb252ZXJzaW9uIEkgbm90aWNlZCB0aGF0 IDIgZGVidWdmcyBmaWxlcyBpbiBpOTE1Cj4gY29tcGxldGVseSBsYWNrZWQgYXBwcm9wcmlhdGUg bG9ja2luZy4gRml4IHRoYXQgdXAgdG9vLgo+IAo+IHYyOiBkb24ndCBmb3JnZXQgdG8gc3dpdGNo IHRvIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkLgo+IAo+IENjOiBBbGV4IERl dWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+CgpPaywgbWVyZ2VkIHVwIHRvIHRoaXMg cGF0Y2ggdG8gZHJtLW1pc2MsIHRoYW5rcyBhIGxvdCBmb3IgZmVlZGJhY2sgYW5kCnJldmlldy4K LURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5j IHwgMTAgKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jICAgICAgICAgICAg ICAgfCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jICAgICAgICAgICAgICB8ICA5 ICsrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2luZm8uYyAgICAgICAgICAgICAgfCAg NCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8IDEyICsr KysrKysrKystLQo+ICBpbmNsdWRlL2RybS9kcm1QLmggICAgICAgICAgICAgICAgICAgICAgfCAg MSArCj4gIDYgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+IGluZGV4IGZhNmEy N2JmZjI5OC4uYTA4N2I5NjM4Y2RlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZW0uYwo+IEBAIC05Myw3ICs5Myw3IEBAIHZvaWQgYW1kZ3B1X2dlbV9mb3JjZV9yZWxl YXNlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRk ZXYgPSBhZGV2LT5kZGV2Owo+ICAJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICAKPiAtCW11dGV4 X2xvY2soJmRkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF9sb2NrKCZkZGV2LT5maWxlbGlz dF9tdXRleCk7Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShmaWxlLCAmZGRldi0+ZmlsZWxp c3QsIGxoZWFkKSB7Cj4gIAkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqOwo+IEBAIC0xMDMs MTMgKzEwMywxMyBAQCB2b2lkIGFtZGdwdV9nZW1fZm9yY2VfcmVsZWFzZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKPiAgCQlzcGluX2xvY2soJmZpbGUtPnRhYmxlX2xvY2spOwo+ICAJCWlk cl9mb3JfZWFjaF9lbnRyeSgmZmlsZS0+b2JqZWN0X2lkciwgZ29iaiwgaGFuZGxlKSB7Cj4gIAkJ CVdBUk5fT05DRSgxLCAiQW5kIGFsc28gYWN0aXZlIGFsbG9jYXRpb25zIVxuIik7Cj4gLQkJCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKGdvYmopOwo+ICsJCQlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZV91bmxvY2tlZChnb2JqKTsKPiAgCQl9Cj4gIAkJaWRyX2Rlc3Ryb3koJmZpbGUtPm9i amVjdF9pZHIpOwo+ICAJCXNwaW5fdW5sb2NrKCZmaWxlLT50YWJsZV9sb2NrKTsKPiAgCX0KPiAg Cj4gLQltdXRleF91bmxvY2soJmRkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2so JmRkZXYtPmZpbGVsaXN0X211dGV4KTsKPiAgfQo+ICAKPiAgLyoKPiBAQCAtNzY5LDcgKzc2OSw3 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RlYnVnZnNfZ2VtX2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQo+ICAJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICAJaW50IHI7Cj4gIAo+ IC0JciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJ ciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gIAlp ZiAocikKPiAgCQlyZXR1cm4gcjsKPiAgCj4gQEAgLTc5Myw3ICs3OTMsNyBAQCBzdGF0aWMgaW50 IGFtZGdwdV9kZWJ1Z2ZzX2dlbV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkK PiAgCQlzcGluX3VubG9jaygmZmlsZS0+dGFibGVfbG9jayk7Cj4gIAl9Cj4gIAo+IC0JbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJmRldi0+ZmlsZWxp c3RfbXV0ZXgpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4gaW5kZXggZTFm YjUyZDRmNzJjLi5iZmY4OTIyNmEzNDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiBAQCAtNTkwLDYgKzU5 MCw3IEBAIHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2X2FsbG9jKHN0cnVjdCBkcm1fZHJpdmVy ICpkcml2ZXIsCj4gIAlzcGluX2xvY2tfaW5pdCgmZGV2LT5idWZfbG9jayk7Cj4gIAlzcGluX2xv Y2tfaW5pdCgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCW11dGV4X2luaXQoJmRldi0+c3RydWN0X211 dGV4KTsKPiArCW11dGV4X2luaXQoJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICAJbXV0ZXhfaW5p dCgmZGV2LT5jdHhsaXN0X211dGV4KTsKPiAgCW11dGV4X2luaXQoJmRldi0+bWFzdGVyX211dGV4 KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9mb3BzLmMKPiBpbmRleCBjM2QwYWFhYzA2NjkuLjdhZjdmOGJjYjM1NSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZm9wcy5jCj4gQEAgLTI5Nyw5ICsyOTcsOSBAQCBzdGF0aWMgaW50IGRybV9v cGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGRybV9taW5vciAqbWlub3IpCj4g IAl9Cj4gIAltdXRleF91bmxvY2soJmRldi0+bWFzdGVyX211dGV4KTsKPiAgCj4gLQltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211 dGV4KTsKPiAgCWxpc3RfYWRkKCZwcml2LT5saGVhZCwgJmRldi0+ZmlsZWxpc3QpOwo+IC0JbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwltdXRleF91bmxvY2soJmRldi0+Zmls ZWxpc3RfbXV0ZXgpOwo+ICAKPiAgI2lmZGVmIF9fYWxwaGFfXwo+ICAJLyoKPiBAQCAtNDQ3LDgg KzQ0NywxMSBAQCBpbnQgZHJtX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZp bGUgKmZpbHApCj4gIAo+ICAJRFJNX0RFQlVHKCJvcGVuX2NvdW50ID0gJWRcbiIsIGRldi0+b3Bl bl9jb3VudCk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0 ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gIAlsaXN0X2RlbCgmZmlsZV9wcml2LT5s aGVhZCk7Cj4gKwltdXRleF91bmxvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICsKPiArCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCWlmIChmaWxlX3ByaXYtPm1hZ2ljKQo+ ICAJCWlkcl9yZW1vdmUoJmZpbGVfcHJpdi0+bWFzdGVyLT5tYWdpY19tYXAsIGZpbGVfcHJpdi0+ bWFnaWMpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbmZv LmMKPiBpbmRleCBjYmI0ZmMwZmM5NjkuLjVkNDY5YjJmMjZmNCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2luZm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW5mby5j Cj4gQEAgLTE3NCw3ICsxNzQsNyBAQCBpbnQgZHJtX2NsaWVudHNfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkvKiBkZXYtPmZpbGVsaXN0IGlzIHNvcnRlZCB5b3VuZ2Vz dCBmaXJzdCwgYnV0IHdlIHdhbnQgdG8gcHJlc2VudAo+ICAJICogb2xkZXN0IGZpcnN0IChpLmUu IGtlcm5lbCwgc2VydmVycywgY2xpZW50cyksIHNvIHdhbGsgYmFja3dhcmRzcy4KPiAgCSAqLwo+ IC0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5m aWxlbGlzdF9tdXRleCk7Cj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocHJpdiwgJmRl di0+ZmlsZWxpc3QsIGxoZWFkKSB7Cj4gIAkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwo+ICAK PiBAQCAtMTkwLDcgKzE5MCw3IEBAIGludCBkcm1fY2xpZW50c19pbmZvKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkJICAgcHJpdi0+bWFnaWMpOwo+ICAJCXJjdV9yZWFkX3Vu bG9jaygpOwo+ICAJfQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlt dXRleF91bmxvY2soJmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA0OTUwZDA1ZDI5NDguLjhi OGQ2ZjA3ZDdhYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTUy OCw2ICs1MjgsMTAgQEAgc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQqIGRhdGEpCj4gIAo+ICAJc2VxX3B1dGMobSwgJ1xuJyk7Cj4gIAlwcmlu dF9iYXRjaF9wb29sX3N0YXRzKG0sIGRldl9wcml2KTsKPiArCj4gKwltdXRleF91bmxvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4 KTsKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShmaWxlLCAmZGV2LT5maWxlbGlzdCwg bGhlYWQpIHsKPiAgCQlzdHJ1Y3QgZmlsZV9zdGF0cyBzdGF0czsKPiAgCQlzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2s7Cj4gQEAgLTU0OCw4ICs1NTIsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX29i amVjdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCogZGF0YSkKPiAgCQlwcmludF9maWxl X3N0YXRzKG0sIHRhc2sgPyB0YXNrLT5jb21tIDogIjx1bmtub3duPiIsIHN0YXRzKTsKPiAgCQly Y3VfcmVhZF91bmxvY2soKTsKPiAgCX0KPiAtCj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiArCW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiBAQCAtMjM1NCw2ICsyMzU3LDcgQEAgc3RhdGljIGludCBpOTE1X3Bw Z3R0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiAgCQlnZW42X3BwZ3R0X2luZm8obSwgZGV2KTsKPiAg Cj4gKwltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiAgCWxpc3RfZm9yX2VhY2hf ZW50cnlfcmV2ZXJzZShmaWxlLCAmZGV2LT5maWxlbGlzdCwgbGhlYWQpIHsKPiAgCQlzdHJ1Y3Qg ZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAg CQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4gQEAgLTIzNjgsNiArMjM3Miw3IEBAIHN0YXRp YyBpbnQgaTkxNV9wcGd0dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAg CQlpZHJfZm9yX2VhY2goJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIsIHBlcl9maWxlX2N0eCwKPiAg CQkJICAgICAodm9pZCAqKSh1bnNpZ25lZCBsb25nKW0pOwo+ICAJfQo+ICsJbXV0ZXhfdW5sb2Nr KCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiAgCj4gIG91dF9wdXQ6Cj4gIAlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7Cj4gQEAgLTI0MDMsNiArMjQwOCw4IEBAIHN0YXRpYyBpbnQgaTkx NV9ycHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkJICAg aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWluX2ZyZXFfc29mdGxpbWl0 KSwKPiAgCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5tYXhfZnJl cV9zb2Z0bGltaXQpLAo+ICAJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+ cnBzLm1heF9mcmVxKSk7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7 Cj4gIAlzcGluX2xvY2soJmRldl9wcml2LT5ycHMuY2xpZW50X2xvY2spOwo+ICAJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9yZXZlcnNlKGZpbGUsICZkZXYtPmZpbGVsaXN0LCBsaGVhZCkgewo+ICAJCXN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2 Owo+IEBAIC0yNDI1LDYgKzI0MzIsNyBAQCBzdGF0aWMgaW50IGk5MTVfcnBzX2Jvb3N0X2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCSAgIGxpc3RfZW1wdHkoJmRldl9w cml2LT5ycHMubW1pb2ZsaXBzLmxpbmspID8gIiIgOiAiLCBhY3RpdmUiKTsKPiAgCXNlcV9wcmlu dGYobSwgIktlcm5lbCBib29zdHM6ICVkXG4iLCBkZXZfcHJpdi0+cnBzLmJvb3N0cyk7Cj4gIAlz cGluX3VubG9jaygmZGV2X3ByaXYtPnJwcy5jbGllbnRfbG9jayk7Cj4gKwltdXRleF91bmxvY2so JmRldi0+ZmlsZWxpc3RfbXV0ZXgpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAo+IGluZGV4IGY4Mjk3 OWRlZTY0Ny4uYzgxZGQyMjUwZmM2IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybVAuaAo+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybVAuaAo+IEBAIC03NjksNiArNzY5LDcgQEAgc3RydWN0IGRy bV9kZXZpY2Ugewo+ICAJYXRvbWljX3QgYnVmX2FsbG9jOwkJLyoqPCBCdWZmZXIgYWxsb2NhdGlv biBpbiBwcm9ncmVzcyAqLwo+ICAJLypAfSAqLwo+ICAKPiArCXN0cnVjdCBtdXRleCBmaWxlbGlz dF9tdXRleDsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgZmlsZWxpc3Q7Cj4gIAo+ICAJLyoqIFxuYW1l IE1lbW9yeSBtYW5hZ2VtZW50ICovCj4gLS0gCj4gMi44LjEKPiAKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK