From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 09/13] drm: Tighten locking in drm_mode_getconnector Date: Sun, 18 Dec 2016 14:40:44 +0100 Message-ID: <20161218134044.63yqqo3shygcqek3@phenom.ffwll.local> References: <20161213230814.19598-1-daniel.vetter@ffwll.ch> <20161213230814.19598-10-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wj0-x242.google.com (mail-wj0-x242.google.com [IPv6:2a00:1450:400c:c01::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 56FA96E2C0 for ; Sun, 18 Dec 2016 13:40:49 +0000 (UTC) Received: by mail-wj0-x242.google.com with SMTP id xy5so20280259wjc.1 for ; Sun, 18 Dec 2016 05:40:49 -0800 (PST) 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: Sean Paul Cc: Daniel Vetter , Intel Graphics Development , DRI Development , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBEZWMgMTYsIDIwMTYgYXQgMTA6MDM6MzJBTSAtMDUwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIFR1ZSwgRGVjIDEzLCAyMDE2IGF0IDY6MDggUE0sIERhbmllbCBWZXR0ZXIgPGRhbmll bC52ZXR0ZXJAZmZ3bGwuY2g+IHdyb3RlOgo+ID4gLSBNb2Rlc2V0IHN0YXRlIG5lZWRzIG1vZGVf Y29uZmlnLT5jb25uZWN0aW9uIG11dGV4LCB0aGF0IGNvdmVycwo+ID4gICBmaWd1cmluZyBvdXQg dGhlIGVuY29kZXIsIGFuZCByZWFkaW5nIHByb3BlcnRpZXMgKHNpbmNlIGluIHRoZQo+ID4gICBh dG9taWMgY2FzZSB0aG9zZSBuZWVkIHRvIGxvb2sgYXQgY29ubmVjdG9yLT5zdGF0ZSkuCj4gPgo+ ID4gLSBEb24ndCBob2xkIGFueSBsb2NrcyBmb3Igc3R1ZmYgdGhhdCdzIGludmFyaWFudCAoaS5l LiBwb3NzaWJsZQo+ID4gICBjb25uZWN0b3JzKS4KPiA+Cj4gPiAtIFNhbWUgZm9yIGNvbm5lY3Rv ciBsb29rdXAgYW5kIHVucmVmLCB0aG9zZSBkb24ndCBuZWVkIGFueSBsb2Nrcy4KPiA+Cj4gPiAt IEFuZCBmaW5hbGx5IHRoZSBwcm9iZSBzdHVmZiBpcyBvbmx5IHByb3RlY3RlZCBieSBtb2RlX2Nv bmZpZy0+bXV0ZXguCj4gPgo+ID4gV2hpbGUgYXQgaXQgdXBkYXRlZCB0aGUga2VybmVsZG9jIGZv ciB0aGVzZSBmaWVsZHMgaW4gZHJtX2Nvbm5lY3Rvcgo+ID4gYW5kIGFkZCBkb2NzIGV4cGxhaW5p bmcgd2hhdCdzIHByb3RlY3RlZCBieSB3aGljaCBsb2Nrcy4KPiA+Cj4gCj4gCj4gUmV2aWV3ZWQt Ynk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgoKTWVyZ2VkIHVwIHRvIHRoaXMg cGF0Y2ggdG8gZHJtLW1pc2MsIHRoYW5rcyBmb3IgdGhlIHJldmlld3MgdG8gZXZlcnlvbmUuCi1E YW5pZWwKCj4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMg fCA5MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIGluY2x1 ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgfCAyMyArKysrKysrKystLQo+ID4gIDIgZmlsZXMg Y2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2Nvbm5lY3Rvci5jCj4gPiBpbmRleCAwZDQ3Mjg3MDQwOTkuLjQ0YjU1NmQ1ZDQwYyAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+IEBAIC0xMTYwLDQzICsxMTYwLDY1IEBA IGludCBkcm1fbW9kZV9nZXRjb25uZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPiA+Cj4gPiAgICAgICAgIG1lbXNldCgmdV9tb2RlLCAwLCBzaXplb2Yoc3RydWN0IGRy bV9tb2RlX21vZGVpbmZvKSk7Cj4gPgo+ID4gLSAgICAgICBtdXRleF9sb2NrKCZkZXYtPm1vZGVf Y29uZmlnLm11dGV4KTsKPiA+IC0KPiA+ICAgICAgICAgY29ubmVjdG9yID0gZHJtX2Nvbm5lY3Rv cl9sb29rdXAoZGV2LCBvdXRfcmVzcC0+Y29ubmVjdG9yX2lkKTsKPiA+IC0gICAgICAgaWYgKCFj b25uZWN0b3IpIHsKPiA+IC0gICAgICAgICAgICAgICByZXQgPSAtRU5PRU5UOwo+ID4gLSAgICAg ICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKPiA+IC0gICAgICAgfQo+ID4gKyAgICAgICBpZiAo IWNvbm5lY3RvcikKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKPiA+ICsKPiA+ ICsgICAgICAgZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4LCBOVUxMKTsKPiA+ICsgICAgICAgZW5jb2RlciA9IGRybV9jb25uZWN0b3JfZ2V0X2VuY29k ZXIoY29ubmVjdG9yKTsKPiA+ICsgICAgICAgaWYgKGVuY29kZXIpCj4gPiArICAgICAgICAgICAg ICAgb3V0X3Jlc3AtPmVuY29kZXJfaWQgPSBlbmNvZGVyLT5iYXNlLmlkOwo+ID4gKyAgICAgICBl bHNlCj4gPiArICAgICAgICAgICAgICAgb3V0X3Jlc3AtPmVuY29kZXJfaWQgPSAwOwo+ID4gKwo+ ID4gKyAgICAgICByZXQgPSBkcm1fbW9kZV9vYmplY3RfZ2V0X3Byb3BlcnRpZXMoJmNvbm5lY3Rv ci0+YmFzZSwgZmlsZV9wcml2LT5hdG9taWMsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAo dWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxvbmcpKG91dF9yZXNwLT5wcm9wc19wdHIpLAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90IF9fdXNlciAqKSh1bnNpZ25lZCBs b25nKShvdXRfcmVzcC0+cHJvcF92YWx1ZXNfcHRyKSwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICZvdXRfcmVzcC0+Y291bnRfcHJvcHMpOwo+ID4gKyAgICAgICBkcm1fbW9kZXNldF91bmxv Y2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gPiArICAgICAgIGlmIChy ZXQpCj4gPiArICAgICAgICAgICAgICAgZ290byBvdXRfdW5yZWY7Cj4gPgo+ID4gICAgICAgICBm b3IgKGkgPSAwOyBpIDwgRFJNX0NPTk5FQ1RPUl9NQVhfRU5DT0RFUjsgaSsrKQo+ID4gICAgICAg ICAgICAgICAgIGlmIChjb25uZWN0b3ItPmVuY29kZXJfaWRzW2ldICE9IDApCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBlbmNvZGVyc19jb3VudCsrOwo+ID4KPiA+ICsgICAgICAgaWYgKChv dXRfcmVzcC0+Y291bnRfZW5jb2RlcnMgPj0gZW5jb2RlcnNfY291bnQpICYmIGVuY29kZXJzX2Nv dW50KSB7Cj4gPiArICAgICAgICAgICAgICAgY29waWVkID0gMDsKPiA+ICsgICAgICAgICAgICAg ICBlbmNvZGVyX3B0ciA9ICh1aW50MzJfdCBfX3VzZXIgKikodW5zaWduZWQgbG9uZykob3V0X3Jl c3AtPmVuY29kZXJzX3B0cik7Cj4gPiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IERS TV9DT05ORUNUT1JfTUFYX0VOQ09ERVI7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbaV0gIT0gMCkgewo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAocHV0X3VzZXIoY29ubmVjdG9yLT5lbmNvZGVyX2lkc1tp XSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29k ZXJfcHRyICsgY29waWVkKSkgewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldCA9IC1FRkFVTFQ7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ290byBvdXRfdW5yZWY7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29waWVkKys7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4gKyAgICAg ICB9Cj4gPiArICAgICAgIG91dF9yZXNwLT5jb3VudF9lbmNvZGVycyA9IGVuY29kZXJzX2NvdW50 Owo+ID4gKwo+ID4gKyAgICAgICBvdXRfcmVzcC0+Y29ubmVjdG9yX2lkID0gY29ubmVjdG9yLT5i YXNlLmlkOwo+ID4gKyAgICAgICBvdXRfcmVzcC0+Y29ubmVjdG9yX3R5cGUgPSBjb25uZWN0b3It PmNvbm5lY3Rvcl90eXBlOwo+ID4gKyAgICAgICBvdXRfcmVzcC0+Y29ubmVjdG9yX3R5cGVfaWQg PSBjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlX2lkOwo+ID4gKwo+ID4gKyAgICAgICBtdXRleF9s b2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiA+ICAgICAgICAgaWYgKG91dF9yZXNwLT5j b3VudF9tb2RlcyA9PSAwKSB7Cj4gPiAgICAgICAgICAgICAgICAgY29ubmVjdG9yLT5mdW5jcy0+ ZmlsbF9tb2Rlcyhjb25uZWN0b3IsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCwKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bW9kZV9jb25maWcubWF4X2hl aWdodCk7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiAtICAgICAgIC8qIGRlbGF5ZWQgc28gd2UgZ2V0 IG1vZGVzIHJlZ2FyZGxlc3Mgb2YgcHJlLWZpbGxfbW9kZXMgc3RhdGUgKi8KPiA+IC0gICAgICAg bGlzdF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5tb2RlcywgaGVhZCkKPiA+IC0g ICAgICAgICAgICAgICBpZiAoZHJtX21vZGVfZXhwb3NlX3RvX3VzZXJzcGFjZShtb2RlLCBmaWxl X3ByaXYpKQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgbW9kZV9jb3VudCsrOwo+ID4gLQo+ ID4gLSAgICAgICBvdXRfcmVzcC0+Y29ubmVjdG9yX2lkID0gY29ubmVjdG9yLT5iYXNlLmlkOwo+ ID4gLSAgICAgICBvdXRfcmVzcC0+Y29ubmVjdG9yX3R5cGUgPSBjb25uZWN0b3ItPmNvbm5lY3Rv cl90eXBlOwo+ID4gLSAgICAgICBvdXRfcmVzcC0+Y29ubmVjdG9yX3R5cGVfaWQgPSBjb25uZWN0 b3ItPmNvbm5lY3Rvcl90eXBlX2lkOwo+ID4gICAgICAgICBvdXRfcmVzcC0+bW1fd2lkdGggPSBj b25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbTsKPiA+ICAgICAgICAgb3V0X3Jlc3AtPm1t X2hlaWdodCA9IGNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbTsKPiA+ICAgICAgICAg b3V0X3Jlc3AtPnN1YnBpeGVsID0gY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uc3VicGl4ZWxfb3Jk ZXI7Cj4gPiAgICAgICAgIG91dF9yZXNwLT5jb25uZWN0aW9uID0gY29ubmVjdG9yLT5zdGF0dXM7 Cj4gPgo+ID4gLSAgICAgICBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rpb25fbXV0ZXgsIE5VTEwpOwo+ID4gLSAgICAgICBlbmNvZGVyID0gZHJtX2Nvbm5lY3Rvcl9n ZXRfZW5jb2Rlcihjb25uZWN0b3IpOwo+ID4gLSAgICAgICBpZiAoZW5jb2RlcikKPiA+IC0gICAg ICAgICAgICAgICBvdXRfcmVzcC0+ZW5jb2Rlcl9pZCA9IGVuY29kZXItPmJhc2UuaWQ7Cj4gPiAt ICAgICAgIGVsc2UKPiA+IC0gICAgICAgICAgICAgICBvdXRfcmVzcC0+ZW5jb2Rlcl9pZCA9IDA7 Cj4gPiArICAgICAgIC8qIGRlbGF5ZWQgc28gd2UgZ2V0IG1vZGVzIHJlZ2FyZGxlc3Mgb2YgcHJl LWZpbGxfbW9kZXMgc3RhdGUgKi8KPiA+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShtb2Rl LCAmY29ubmVjdG9yLT5tb2RlcywgaGVhZCkKPiA+ICsgICAgICAgICAgICAgICBpZiAoZHJtX21v ZGVfZXhwb3NlX3RvX3VzZXJzcGFjZShtb2RlLCBmaWxlX3ByaXYpKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgbW9kZV9jb3VudCsrOwo+ID4KPiA+ICAgICAgICAgLyoKPiA+ICAgICAgICAg ICogVGhpcyBpb2N0bCBpcyBjYWxsZWQgdHdpY2UsIG9uY2UgdG8gZGV0ZXJtaW5lIGhvdyBtdWNo IHNwYWNlIGlzCj4gPiBAQCAtMTIxOSwzNiArMTI0MSwxMCBAQCBpbnQgZHJtX21vZGVfZ2V0Y29u bmVjdG9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gPiAgICAgICAgICAg ICAgICAgfQo+ID4gICAgICAgICB9Cj4gPiAgICAgICAgIG91dF9yZXNwLT5jb3VudF9tb2RlcyA9 IG1vZGVfY291bnQ7Cj4gPiAtCj4gPiAtICAgICAgIHJldCA9IGRybV9tb2RlX29iamVjdF9nZXRf cHJvcGVydGllcygmY29ubmVjdG9yLT5iYXNlLCBmaWxlX3ByaXYtPmF0b21pYywKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCBfX3VzZXIgKikodW5zaWduZWQgbG9uZykob3V0 X3Jlc3AtPnByb3BzX3B0ciksCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAodWludDY0X3Qg X191c2VyICopKHVuc2lnbmVkIGxvbmcpKG91dF9yZXNwLT5wcm9wX3ZhbHVlc19wdHIpLAo+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgJm91dF9yZXNwLT5jb3VudF9wcm9wcyk7Cj4gPiAtICAg ICAgIGlmIChyZXQpCj4gPiAtICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAtCj4gPiAtICAg ICAgIGlmICgob3V0X3Jlc3AtPmNvdW50X2VuY29kZXJzID49IGVuY29kZXJzX2NvdW50KSAmJiBl bmNvZGVyc19jb3VudCkgewo+ID4gLSAgICAgICAgICAgICAgIGNvcGllZCA9IDA7Cj4gPiAtICAg ICAgICAgICAgICAgZW5jb2Rlcl9wdHIgPSAodWludDMyX3QgX191c2VyICopKHVuc2lnbmVkIGxv bmcpKG91dF9yZXNwLT5lbmNvZGVyc19wdHIpOwo+ID4gLSAgICAgICAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBEUk1fQ09OTkVDVE9SX01BWF9FTkNPREVSOyBpKyspIHsKPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmIChjb25uZWN0b3ItPmVuY29kZXJfaWRzW2ldICE9IDApIHsKPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB1dF91c2VyKGNvbm5lY3Rvci0+ZW5j b2Rlcl9pZHNbaV0sCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbmNvZGVyX3B0ciArIGNvcGllZCkpIHsKPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXQgPSAtRUZBVUxUOwo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZCsrOwo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAgICAgICAgIH0KPiA+IC0g ICAgICAgfQo+ID4gLSAgICAgICBvdXRfcmVzcC0+Y291bnRfZW5jb2RlcnMgPSBlbmNvZGVyc19j b3VudDsKPiA+IC0KPiA+ICBvdXQ6Cj4gPiAtICAgICAgIGRybV9tb2Rlc2V0X3VubG9jaygmZGV2 LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKPiA+IC0KPiA+IC0gICAgICAgZHJtX2Nv bm5lY3Rvcl91bnJlZmVyZW5jZShjb25uZWN0b3IpOwo+ID4gLW91dF91bmxvY2s6Cj4gPiAgICAg ICAgIG11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gPiArb3V0X3VucmVm Ogo+ID4gKyAgICAgICBkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKGNvbm5lY3Rvcik7Cj4gPgo+ ID4gICAgICAgICByZXR1cm4gcmV0Owo+ID4gIH0KPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+IGluZGV4 IGEyNDU1OWVmOGJiNy4uOWFmNDE0MTE2NWQzIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2Nvbm5lY3Rvci5oCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ IEBAIC01NTksOSArNTU5LDYgQEAgc3RydWN0IGRybV9jbWRsaW5lX21vZGUgewo+ID4gICAqIEBp bnRlcmxhY2VfYWxsb3dlZDogY2FuIHRoaXMgY29ubmVjdG9yIGhhbmRsZSBpbnRlcmxhY2VkIG1v ZGVzPwo+ID4gICAqIEBkb3VibGVzY2FuX2FsbG93ZWQ6IGNhbiB0aGlzIGNvbm5lY3RvciBoYW5k bGUgZG91Ymxlc2Nhbj8KPiA+ICAgKiBAc3RlcmVvX2FsbG93ZWQ6IGNhbiB0aGlzIGNvbm5lY3Rv ciBoYW5kbGUgc3RlcmVvIG1vZGVzPwo+ID4gLSAqIEBtb2RlczogbW9kZXMgYXZhaWxhYmxlIG9u IHRoaXMgY29ubmVjdG9yIChmcm9tIGZpbGxfbW9kZXMoKSArIHVzZXIpCj4gPiAtICogQHN0YXR1 czogb25lIG9mIHRoZSBkcm1fY29ubmVjdG9yX3N0YXR1cyBlbnVtcyAoY29ubmVjdGVkLCBub3Qs IG9yIHVua25vd24pCj4gPiAtICogQHByb2JlZF9tb2RlczogbGlzdCBvZiBtb2RlcyBkZXJpdmVk IGRpcmVjdGx5IGZyb20gdGhlIGRpc3BsYXkKPiA+ICAgKiBAZnVuY3M6IGNvbm5lY3RvciBjb250 cm9sIGZ1bmN0aW9ucwo+ID4gICAqIEBlZGlkX2Jsb2JfcHRyOiBEUk0gcHJvcGVydHkgY29udGFp bmluZyBFRElEIGlmIHByZXNlbnQKPiA+ICAgKiBAcHJvcGVydGllczogcHJvcGVydHkgdHJhY2tp bmcgZm9yIHRoaXMgY29ubmVjdG9yCj4gPiBAQCAtNjMxLDExICs2MjgsMjcgQEAgc3RydWN0IGRy bV9jb25uZWN0b3Igewo+ID4gICAgICAgICAgKiBQcm90ZWN0ZWQgYnkgQG11dGV4Lgo+ID4gICAg ICAgICAgKi8KPiA+ICAgICAgICAgYm9vbCByZWdpc3RlcmVkOwo+ID4gKwo+ID4gKyAgICAgICAv KioKPiA+ICsgICAgICAgICogQG1vZGVzOgo+ID4gKyAgICAgICAgKiBNb2RlcyBhdmFpbGFibGUg b24gdGhpcyBjb25uZWN0b3IgKGZyb20gZmlsbF9tb2RlcygpICsgdXNlcikuCj4gPiArICAgICAg ICAqIFByb3RlY3RlZCBieSBkZXYtPm1vZGVfY29uZmlnLm11dGV4Lgo+ID4gKyAgICAgICAgKi8K PiA+ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtb2RlczsgLyogbGlzdCBvZiBtb2RlcyBvbiB0 aGlzIGNvbm5lY3RvciAqLwo+ID4KPiA+ICsgICAgICAgLyoqCj4gPiArICAgICAgICAqIEBzdGF0 dXM6Cj4gPiArICAgICAgICAqIE9uZSBvZiB0aGUgZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgZW51bXMg KGNvbm5lY3RlZCwgbm90LCBvciB1bmtub3duKS4KPiA+ICsgICAgICAgICogUHJvdGVjdGVkIGJ5 IGRldi0+bW9kZV9jb25maWcubXV0ZXguCj4gPiArICAgICAgICAqLwo+ID4gICAgICAgICBlbnVt IGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1czsKPiA+Cj4gPiAtICAgICAgIC8qIHRoZXNlIGFy ZSBtb2RlcyBhZGRlZCBieSBwcm9iaW5nIHdpdGggRERDIG9yIHRoZSBCSU9TICovCj4gPiArICAg ICAgIC8qKgo+ID4gKyAgICAgICAgKiBAcHJvYmVkX21vZGVzOgo+ID4gKyAgICAgICAgKiBUaGVz ZSBhcmUgbW9kZXMgYWRkZWQgYnkgcHJvYmluZyB3aXRoIEREQyBvciB0aGUgQklPUywgYmVmb3Jl Cj4gPiArICAgICAgICAqIGZpbHRlcmluZyBpcyBhcHBsaWVkLiBVc2VkIGJ5IHRoZSBwcm9iZSBo ZWxwZXJzLlByb3RlY3RlZCBieQo+ID4gKyAgICAgICAgKiBkZXYtPm1vZGVfY29uZmlnLm11dGV4 Lgo+ID4gKyAgICAgICAgKi8KPiA+ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBwcm9iZWRfbW9k ZXM7Cj4gPgo+ID4gICAgICAgICAvKioKPiA+IEBAIC02NDQsNiArNjU3LDggQEAgc3RydWN0IGRy bV9jb25uZWN0b3Igewo+ID4gICAgICAgICAgKiBmbGF0IHBhbmVscyBpbiBlbWJlZGRlZCBzeXN0 ZW1zLCB0aGUgZHJpdmVyIHNob3VsZCBpbml0aWFsaXplIHRoZQo+ID4gICAgICAgICAgKiBkaXNw bGF5X2luZm8ud2lkdGhfbW0gYW5kIGRpc3BsYXlfaW5mby5oZWlnaHRfbW0gZmllbGRzIHdpdGgg dGhlCj4gPiAgICAgICAgICAqIHBoeXNpY2FsIHNpemUgb2YgdGhlIGRpc3BsYXkuCj4gPiArICAg ICAgICAqCj4gPiArICAgICAgICAqIFByb3RlY3RlZCBieSBkZXYtPm1vZGVfY29uZmlnLm11dGV4 Lgo+ID4gICAgICAgICAgKi8KPiA+ICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X2luZm8gZGlz cGxheV9pbmZvOwo+ID4gICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyAq ZnVuY3M7Cj4gPiAtLQo+ID4gMi4xMS4wCj4gPgo+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+IGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gCj4gCj4gCj4gLS0gCj4gU2VhbiBQ YXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKCi0tIApEYW5pZWwg VmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5m ZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK