From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 3/6] drm: Introduce drm_connector_{get,put}() Date: Wed, 8 Feb 2017 14:33:46 -0500 Message-ID: <20170208193346.GG14321@art_vandelay> References: <20170208182408.5442-1-thierry.reding@gmail.com> <20170208182408.5442-4-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-x232.google.com (mail-yw0-x232.google.com [IPv6:2607:f8b0:4002:c05::232]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3B6189109 for ; Wed, 8 Feb 2017 19:33:49 +0000 (UTC) Received: by mail-yw0-x232.google.com with SMTP id v200so92275681ywc.3 for ; Wed, 08 Feb 2017 11:33:49 -0800 (PST) Content-Disposition: inline In-Reply-To: <20170208182408.5442-4-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: Daniel Vetter , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBGZWIgMDgsIDIwMTcgYXQgMDc6MjQ6MDVQTSArMDEwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBG b3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciByZWZlcmVuY2UgY291bnRpbmcgQVBJcyBpbiB0aGUg a2VybmVsLCBhZGQKPiBkcm1fY29ubmVjdG9yX2dldCgpIGFuZCBkcm1fY29ubmVjdG9yX3B1dCgp IGZ1bmN0aW9ucyB0byByZWZlcmVuY2UgY291bnQKPiBjb25uZWN0b3JzLgo+IAo+IENvbXBhdGli aWxpdHkgYWxpYXNlcyBhcmUgYWRkZWQgdG8ga2VlcCBleGlzdGluZyBjb2RlIHdvcmtpbmcuIFRv IGhlbHAKPiBzcGVlZCB1cCB0aGUgdHJhbnNpdGlvbiwgYWxsIHRoZSBpbnN0YW5jZXMgb2YgdGhl IG9sZCBmdW5jdGlvbnMgaW4gdGhlCj4gRFJNIGNvcmUgYXJlIGFscmVhZHkgcmVwbGFjZWQgaW4g dGhpcyBjb21taXQuCj4gCj4gVGhlIGV4aXN0aW5nIHNlbWFudGljIHBhdGNoIGZvciBtb2RlIG9i amVjdCByZWZlcmVuY2UgY291bnQgY29udmVyc2lvbgo+IGlzIGV4dGVuZGVkIGZvciB0aGVzZSBu ZXcgaGVscGVycy4KPiAKCmRyaXZlcnMvZ3B1L2RybS8qCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVs IDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cgo+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5n IDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj LmMgICAgICAgICAgICAgfCAgOCArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jICAgICAgfCAgNCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9y LmMgICAgICAgICAgfCAxMCArKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyAg ICAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5j ICAgICAgICB8ICA2ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgICAg ICAgICAgfCAxMiArKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcu YyAgICAgICAgfCAgMiArLQo+ICBpbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggICAgICAgICAg ICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiAgc2NyaXB0cy9jb2Nj aW5lbGxlL2FwaS9kcm0tZ2V0LXB1dC5jb2NjaSB8IDEwICsrKysrKysrCj4gIDkgZmlsZXMgY2hh bmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jCj4gaW5kZXggMmJiMGE3NTllOGVjLi44MmJhZDQwYjJmM2UgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMKPiBAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgZHJtX2F0b21pY19zdGF0ZV9kZWZhdWx0 X2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQkJCQkJICAgICAgIHN0 YXRlLT5jb25uZWN0b3JzW2ldLnN0YXRlKTsKPiAgCQlzdGF0ZS0+Y29ubmVjdG9yc1tpXS5wdHIg PSBOVUxMOwo+ICAJCXN0YXRlLT5jb25uZWN0b3JzW2ldLnN0YXRlID0gTlVMTDsKPiAtCQlkcm1f Y29ubmVjdG9yX3VucmVmZXJlbmNlKGNvbm5lY3Rvcik7Cj4gKwkJZHJtX2Nvbm5lY3Rvcl9wdXQo Y29ubmVjdG9yKTsKPiAgCX0KPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5udW1fY3J0 YzsgaSsrKSB7Cj4gQEAgLTEwMjYsNyArMTAyNiw3IEBAIGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rv cl9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlpZiAoIWNvbm5lY3Rv cl9zdGF0ZSkKPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gLQlkcm1fY29ubmVj dG9yX3JlZmVyZW5jZShjb25uZWN0b3IpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubmVjdG9y KTsKPiAgCXN0YXRlLT5jb25uZWN0b3JzW2luZGV4XS5zdGF0ZSA9IGNvbm5lY3Rvcl9zdGF0ZTsK PiAgCXN0YXRlLT5jb25uZWN0b3JzW2luZGV4XS5wdHIgPSBjb25uZWN0b3I7Cj4gIAljb25uZWN0 b3Jfc3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4gQEAgLTEzNTcsNyArMTM1Nyw3IEBAIGRybV9hdG9t aWNfc2V0X2NydGNfZm9yX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZSwKPiAgCQljcnRjX3N0YXRlLT5jb25uZWN0b3JfbWFzayAmPQo+ICAJCQl+KDEgPDwg ZHJtX2Nvbm5lY3Rvcl9pbmRleChjb25uX3N0YXRlLT5jb25uZWN0b3IpKTsKPiAgCj4gLQkJZHJt X2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ICsJCWRybV9j b25uZWN0b3JfcHV0KGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAkJY29ubl9zdGF0ZS0+Y3J0 YyA9IE5VTEw7Cj4gIAl9Cj4gIAo+IEBAIC0xMzY5LDcgKzEzNjksNyBAQCBkcm1fYXRvbWljX3Nl dF9jcnRjX2Zvcl9jb25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGUsCj4gIAkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yX21hc2sgfD0KPiAgCQkJMSA8PCBkcm1fY29u bmVjdG9yX2luZGV4KGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAo+IC0JCWRybV9jb25uZWN0 b3JfcmVmZXJlbmNlKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gKwkJZHJtX2Nvbm5lY3Rvcl9n ZXQoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCQljb25uX3N0YXRlLT5jcnRjID0gY3J0YzsK PiAgCj4gIAkJRFJNX0RFQlVHX0FUT01JQygiTGluayBjb25uZWN0b3Igc3RhdGUgJXAgdG8gW0NS VEM6JWQ6JXNdXG4iLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gaW5kZXggOWEw ODQ0NWE3YTdhLi45ZjJjMjhkZGY5NDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYwo+IEBAIC0zMjcyLDcgKzMyNzIsNyBAQCBfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgewo+ ICAJbWVtY3B5KHN0YXRlLCBjb25uZWN0b3ItPnN0YXRlLCBzaXplb2YoKnN0YXRlKSk7Cj4gIAlp ZiAoc3RhdGUtPmNydGMpCj4gLQkJZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2UoY29ubmVjdG9yKTsK PiArCQlkcm1fY29ubmVjdG9yX2dldChjb25uZWN0b3IpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wo X19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKTsKPiAgCj4gQEAg LTMzOTgsNyArMzM5OCw3IEBAIHZvaWQKPiAgX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqc3RhdGUpCj4gIHsKPiAg CWlmIChzdGF0ZS0+Y3J0YykKPiAtCQlkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKHN0YXRlLT5j b25uZWN0b3IpOwo+ICsJCWRybV9jb25uZWN0b3JfcHV0KHN0YXRlLT5jb25uZWN0b3IpOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9z dGF0ZSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+IGluZGV4IDA2MTYwNjJiMDU1YS4u MGRjMGU1YjMzZjhhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9y LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jCj4gQEAgLTM1LDggKzM1 LDggQEAKPiAgICogYWxzIGZpeGVkIHBhbmVscyBvciBhbnl0aGluZyBlbHNlIHRoYXQgY2FuIGRp c3BsYXkgcGl4ZWxzIGluIHNvbWUgZm9ybS4gQXMKPiAgICogb3Bwb3NlZCB0byBhbGwgb3RoZXIg S01TIG9iamVjdHMgcmVwcmVzZW50aW5nIGhhcmR3YXJlIChsaWtlIENSVEMsIGVuY29kZXIgb3IK PiAgICogcGxhbmUgYWJzdHJhY3Rpb25zKSBjb25uZWN0b3JzIGNhbiBiZSBob3RwbHVnZ2VkIGFu ZCB1bnBsdWdnZWQgYXQgcnVudGltZS4KPiAtICogSGVuY2UgdGhleSBhcmUgcmVmZXJlbmNlLWNv dW50ZWQgdXNpbmcgZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2UoKSBhbmQKPiAtICogZHJtX2Nvbm5l Y3Rvcl91bnJlZmVyZW5jZSgpLgo+ICsgKiBIZW5jZSB0aGV5IGFyZSByZWZlcmVuY2UtY291bnRl ZCB1c2luZyBkcm1fY29ubmVjdG9yX2dldCgpIGFuZAo+ICsgKiBkcm1fY29ubmVjdG9yX3B1dCgp Lgo+ICAgKgo+ICAgKiBLTVMgZHJpdmVyIG11c3QgY3JlYXRlLCBpbml0aWFsaXplLCByZWdpc3Rl ciBhbmQgYXR0YWNoIGF0IGEgJnN0cnVjdAo+ICAgKiBkcm1fY29ubmVjdG9yIGZvciBlYWNoIHN1 Y2ggc2luay4gVGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQgYXMgb3RoZXIgS01TCj4gQEAgLTU0NSw3 ICs1NDUsNyBAQCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBkcm1fY29ubmVj dG9yX2xpc3RfaXRlciAqaXRlcikKPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbmZpZy0+ Y29ubmVjdG9yX2xpc3RfbG9jaywgZmxhZ3MpOwo+ICAKPiAgCWlmIChvbGRfY29ubikKPiAtCQlk cm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKG9sZF9jb25uKTsKPiArCQlkcm1fY29ubmVjdG9yX3B1 dChvbGRfY29ubik7Cj4gIAo+ICAJcmV0dXJuIGl0ZXItPmNvbm47Cj4gIH0KPiBAQCAtNTY0LDcg KzU2NCw3IEBAIHZvaWQgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0KHN0cnVjdCBkcm1fY29u bmVjdG9yX2xpc3RfaXRlciAqaXRlcikKPiAgewo+ICAJaXRlci0+ZGV2ID0gTlVMTDsKPiAgCWlm IChpdGVyLT5jb25uKQo+IC0JCWRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2UoaXRlci0+Y29ubik7 Cj4gKwkJZHJtX2Nvbm5lY3Rvcl9wdXQoaXRlci0+Y29ubik7Cj4gIAlsb2NrX3JlbGVhc2UoJmNv bm5lY3Rvcl9saXN0X2l0ZXJfZGVwX21hcCwgMCwgX1JFVF9JUF8pOwo+ICB9Cj4gIEVYUE9SVF9T WU1CT0woZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0KTsKPiBAQCAtMTI0OSw3ICsxMjQ5LDcg QEAgaW50IGRybV9tb2RlX2dldGNvbm5lY3RvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+ICBvdXQ6Cj4gIAltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgp Owo+ICBvdXRfdW5yZWY6Cj4gLQlkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKGNvbm5lY3Rvcik7 Cj4gKwlkcm1fY29ubmVjdG9yX3B1dChjb25uZWN0b3IpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4g IH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2NydGMuYwo+IGluZGV4IGUyMjg0NTM5ZjgyYy4uOTU5NGM2MjM3OTliIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9jcnRjLmMKPiBAQCAtNjg1LDcgKzY4NSw3IEBAIGludCBkcm1fbW9kZV9zZXRjcnRj KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAlpZiAoY29ubmVjdG9yX3Nl dCkgewo+ICAJCWZvciAoaSA9IDA7IGkgPCBjcnRjX3JlcS0+Y291bnRfY29ubmVjdG9yczsgaSsr KSB7Cj4gIAkJCWlmIChjb25uZWN0b3Jfc2V0W2ldKQo+IC0JCQkJZHJtX2Nvbm5lY3Rvcl91bnJl ZmVyZW5jZShjb25uZWN0b3Jfc2V0W2ldKTsKPiArCQkJCWRybV9jb25uZWN0b3JfcHV0KGNvbm5l Y3Rvcl9zZXRbaV0pOwo+ICAJCX0KPiAgCX0KPiAgCWtmcmVlKGNvbm5lY3Rvcl9zZXQpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBpbmRleCA0NGJhMGU5OTBkNmMuLjUzNjA1MWM2Mjdk OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKPiBAQCAtNDY1LDcgKzQ2NSw3IEBA IGRybV9jcnRjX2hlbHBlcl9kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQkJY29u bmVjdG9yLT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7Cj4gIAo+ICAJCQkvKiB3ZSBrZWVwIGEg cmVmZXJlbmNlIHdoaWxlIHRoZSBlbmNvZGVyIGlzIGJvdW5kICovCj4gLQkJCWRybV9jb25uZWN0 b3JfdW5yZWZlcmVuY2UoY29ubmVjdG9yKTsKPiArCQkJZHJtX2Nvbm5lY3Rvcl9wdXQoY29ubmVj dG9yKTsKPiAgCQl9Cj4gIAkJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0KCZjb25uX2l0ZXIp Owo+ICAJfQo+IEBAIC02MjMsNyArNjIzLDcgQEAgaW50IGRybV9jcnRjX2hlbHBlcl9zZXRfY29u ZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKPiAgCWZvciAocm8gPSAwOyBybyA8IHNldC0+ bnVtX2Nvbm5lY3RvcnM7IHJvKyspIHsKPiAgCQlpZiAoc2V0LT5jb25uZWN0b3JzW3JvXS0+ZW5j b2RlcikKPiAgCQkJY29udGludWU7Cj4gLQkJZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2Uoc2V0LT5j b25uZWN0b3JzW3JvXSk7Cj4gKwkJZHJtX2Nvbm5lY3Rvcl9nZXQoc2V0LT5jb25uZWN0b3JzW3Jv XSk7Cj4gIAl9Cj4gIAo+ICAJLyogYSkgdHJhdmVyc2UgcGFzc2VkIGluIGNvbm5lY3RvciBsaXN0 IGFuZCBnZXQgZW5jb2RlcnMgZm9yIHRoZW0gKi8KPiBAQCAtNzcyLDcgKzc3Miw3IEBAIGludCBk cm1fY3J0Y19oZWxwZXJfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpCj4gIAlm b3IgKHJvID0gMDsgcm8gPCBzZXQtPm51bV9jb25uZWN0b3JzOyBybysrKSB7Cj4gIAkJaWYgKHNl dC0+Y29ubmVjdG9yc1tyb10tPmVuY29kZXIpCj4gIAkJCWNvbnRpbnVlOwo+IC0JCWRybV9jb25u ZWN0b3JfdW5yZWZlcmVuY2Uoc2V0LT5jb25uZWN0b3JzW3JvXSk7Cj4gKwkJZHJtX2Nvbm5lY3Rv cl9wdXQoc2V0LT5jb25uZWN0b3JzW3JvXSk7Cj4gIAl9Cj4gIAo+ICAJLyogVHJ5IHRvIHJlc3Rv cmUgdGhlIGNvbmZpZyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hl bHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+IGluZGV4IGY2ZDRkOTcw MDczNC4uZWUxMzYxYTI0YjNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gQEAgLTE0 MSw3ICsxNDEsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3Jz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIAkJc3RydWN0IGRybV9mYl9oZWxw ZXJfY29ubmVjdG9yICpmYl9oZWxwZXJfY29ubmVjdG9yID0KPiAgCQkJZmJfaGVscGVyLT5jb25u ZWN0b3JfaW5mb1tpXTsKPiAgCj4gLQkJZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShmYl9oZWxw ZXJfY29ubmVjdG9yLT5jb25uZWN0b3IpOwo+ICsJCWRybV9jb25uZWN0b3JfcHV0KGZiX2hlbHBl cl9jb25uZWN0b3ItPmNvbm5lY3Rvcik7Cj4gIAo+ICAJCWtmcmVlKGZiX2hlbHBlcl9jb25uZWN0 b3IpOwo+ICAJCWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV0gPSBOVUxMOwo+IEBAIC0xNzgs NyArMTc4LDcgQEAgaW50IGRybV9mYl9oZWxwZXJfYWRkX29uZV9jb25uZWN0b3Ioc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgc3RydWN0IGRybV8KPiAgCWlmICghZmJfaGVscGVyX2Nv bm5lY3RvcikKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gLQlkcm1fY29ubmVjdG9yX3JlZmVy ZW5jZShjb25uZWN0b3IpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubmVjdG9yKTsKPiAgCWZi X2hlbHBlcl9jb25uZWN0b3ItPmNvbm5lY3RvciA9IGNvbm5lY3RvcjsKPiAgCWZiX2hlbHBlci0+ Y29ubmVjdG9yX2luZm9bZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQrK10gPSBmYl9oZWxwZXJf Y29ubmVjdG9yOwo+ICAJcmV0dXJuIDA7Cj4gQEAgLTIwNCw3ICsyMDQsNyBAQCBpbnQgZHJtX2Zi X2hlbHBlcl9yZW1vdmVfb25lX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyLAo+ICAJaWYgKGkgPT0gZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQpCj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gIAlmYl9oZWxwZXJfY29ubmVjdG9yID0gZmJfaGVscGVyLT5jb25uZWN0b3Jf aW5mb1tpXTsKPiAtCWRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2UoZmJfaGVscGVyX2Nvbm5lY3Rv ci0+Y29ubmVjdG9yKTsKPiArCWRybV9jb25uZWN0b3JfcHV0KGZiX2hlbHBlcl9jb25uZWN0b3It PmNvbm5lY3Rvcik7Cj4gIAo+ICAJZm9yIChqID0gaSArIDE7IGogPCBmYl9oZWxwZXItPmNvbm5l Y3Rvcl9jb3VudDsgaisrKSB7Cj4gIAkJZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tqIC0gMV0g PSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2pdOwo+IEBAIC02MjYsNyArNjI2LDcgQEAgc3Rh dGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9tb2Rlc2V0X3JlbGVhc2Uoc3RydWN0IGRybV9mYl9oZWxw ZXIgKmhlbHBlciwKPiAgCWludCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBtb2Rlc2V0LT5u dW1fY29ubmVjdG9yczsgaSsrKSB7Cj4gLQkJZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShtb2Rl c2V0LT5jb25uZWN0b3JzW2ldKTsKPiArCQlkcm1fY29ubmVjdG9yX3B1dChtb2Rlc2V0LT5jb25u ZWN0b3JzW2ldKTsKPiAgCQltb2Rlc2V0LT5jb25uZWN0b3JzW2ldID0gTlVMTDsKPiAgCX0KPiAg CW1vZGVzZXQtPm51bV9jb25uZWN0b3JzID0gMDsKPiBAQCAtNjQzLDcgKzY0Myw3IEBAIHN0YXRp YyB2b2lkIGRybV9mYl9oZWxwZXJfY3J0Y19mcmVlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxw ZXIpCj4gIAlpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgaGVscGVyLT5jb25uZWN0b3Jf Y291bnQ7IGkrKykgewo+IC0JCWRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2UoaGVscGVyLT5jb25u ZWN0b3JfaW5mb1tpXS0+Y29ubmVjdG9yKTsKPiArCQlkcm1fY29ubmVjdG9yX3B1dChoZWxwZXIt PmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3IpOwo+ICAJCWtmcmVlKGhlbHBlci0+Y29ubmVj dG9yX2luZm9baV0pOwo+ICAJfQo+ICAJa2ZyZWUoaGVscGVyLT5jb25uZWN0b3JfaW5mbyk7Cj4g QEAgLTIxODQsNyArMjE4NCw3IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJCQlmYl9jcnRjLT55ID0gb2Zmc2V0LT55Owo+ ICAJCQltb2Rlc2V0LT5tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwKPiAgCQkJCQkJCSAg IGZiX2NydGMtPmRlc2lyZWRfbW9kZSk7Cj4gLQkJCWRybV9jb25uZWN0b3JfcmVmZXJlbmNlKGNv bm5lY3Rvcik7Cj4gKwkJCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7Cj4gIAkJCW1vZGVz ZXQtPmNvbm5lY3RvcnNbbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMrK10gPSBjb25uZWN0b3I7Cj4g IAkJCW1vZGVzZXQtPmZiID0gZmJfaGVscGVyLT5mYjsKPiAgCQkJbW9kZXNldC0+eCA9IG9mZnNl dC0+eDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4gaW5kZXggODg0Y2M0ZDI2ZmI1Li4y MGFlYzE2NWFiZDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZp Zy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jCj4gQEAgLTQxOCw3 ICs0MTgsNyBAQCB2b2lkIGRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAkJICogY3VycmVudCBjb25uZWN0b3IgaXRzZWxmLCB3aGljaCBtZWFucyBpdCBp cyBpbmhlcmVudGx5IHNhZmUKPiAgCQkgKiBhZ2FpbnN0IHVucmVmZXJlbmNpbmcgdGhlIGN1cnJl bnQgY29ubmVjdG9yIC0gYnV0IG5vdCBhZ2FpbnN0Cj4gIAkJICogZGVsZXRpbmcgaXQgcmlnaHQg YXdheS4gKi8KPiAtCQlkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKGNvbm5lY3Rvcik7Cj4gKwkJ ZHJtX2Nvbm5lY3Rvcl9wdXQoY29ubmVjdG9yKTsKPiAgCX0KPiAgCWRybV9jb25uZWN0b3JfbGlz dF9pdGVyX3B1dCgmY29ubl9pdGVyKTsKPiAgCWlmIChXQVJOX09OKCFsaXN0X2VtcHR5KCZkZXYt Pm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0KSkpIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gaW5kZXgg ZTVlMWVkZGQxOWZiLi5kNjQ5YmVjOTY5MzcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJt X2Nvbm5lY3Rvci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gQEAgLTc5 NSwyNSArNzk1LDUwIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9j b25uZWN0b3JfbG9va3VwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIH0KPiAgCj4gIC8qKgo+ IC0gKiBkcm1fY29ubmVjdG9yX3JlZmVyZW5jZSAtIGluY3IgdGhlIGNvbm5lY3RvciByZWZjbnQK PiAtICogQGNvbm5lY3RvcjogY29ubmVjdG9yCj4gKyAqIGRybV9jb25uZWN0b3JfZ2V0IC0gYWNx dWlyZSBhIGNvbm5lY3RvciByZWZlcmVuY2UKPiArICogQGNvbm5lY3RvcjogRFJNIGNvbm5lY3Rv cgo+ICAgKgo+ICAgKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIGNvbm5lY3RvcidzIHJl ZmNvdW50Lgo+ICAgKi8KPiArc3RhdGljIGlubGluZSB2b2lkIGRybV9jb25uZWN0b3JfZ2V0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWRybV9tb2RlX29iamVjdF9n ZXQoJmNvbm5lY3Rvci0+YmFzZSk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1fY29ubmVjdG9y X3B1dCAtIHJlbGVhc2UgYSBjb25uZWN0b3IgcmVmZXJlbmNlCj4gKyAqIEBjb25uZWN0b3I6IERS TSBjb25uZWN0b3IKPiArICoKPiArICogVGhpcyBmdW5jdGlvbiBkZWNyZW1lbnRzIHRoZSBjb25u ZWN0b3IncyByZWZlcmVuY2UgY291bnQgYW5kIGZyZWVzIHRoZQo+ICsgKiBvYmplY3QgaWYgdGhl IHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSB2 b2lkIGRybV9jb25uZWN0b3JfcHV0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4g K3sKPiArCWRybV9tb2RlX29iamVjdF9wdXQoJmNvbm5lY3Rvci0+YmFzZSk7Cj4gK30KPiArCj4g Ky8qKgo+ICsgKiBkcm1fY29ubmVjdG9yX3JlZmVyZW5jZSAtIGFjcXVpcmUgYSBjb25uZWN0b3Ig cmVmZXJlbmNlCj4gKyAqIEBjb25uZWN0b3I6IERSTSBjb25uZWN0b3IKPiArICoKPiArICogVGhp cyBpcyBhIGNvbXBhdGliaWxpdHkgYWxpYXMgZm9yIGRybV9jb25uZWN0b3JfZ2V0KCkgYW5kIHNo b3VsZCBub3QgYmUKPiArICogdXNlZCBieSBuZXcgY29kZS4KPiArICovCj4gIHN0YXRpYyBpbmxp bmUgdm9pZCBkcm1fY29ubmVjdG9yX3JlZmVyZW5jZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQo+ICB7Cj4gLQlkcm1fbW9kZV9vYmplY3RfcmVmZXJlbmNlKCZjb25uZWN0b3ItPmJh c2UpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubmVjdG9yKTsKPiAgfQo+ICAKPiAgLyoqCj4g LSAqIGRybV9jb25uZWN0b3JfdW5yZWZlcmVuY2UgLSB1bnJlZiBhIGNvbm5lY3Rvcgo+IC0gKiBA Y29ubmVjdG9yOiBjb25uZWN0b3IgdG8gdW5yZWYKPiArICogZHJtX2Nvbm5lY3Rvcl91bnJlZmVy ZW5jZSAtIHJlbGVhc2UgYSBjb25uZWN0b3IgcmVmZXJlbmNlCj4gKyAqIEBjb25uZWN0b3I6IERS TSBjb25uZWN0b3IKPiAgICoKPiAtICogVGhpcyBmdW5jdGlvbiBkZWNyZW1lbnRzIHRoZSBjb25u ZWN0b3IncyByZWZjb3VudCBhbmQgZnJlZXMgaXQgaWYgaXQgZHJvcHMgdG8gemVyby4KPiArICog VGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgYWxpYXMgZm9yIGRybV9jb25uZWN0b3JfcHV0KCkgYW5k IHNob3VsZCBub3QgYmUKPiArICogdXNlZCBieSBuZXcgY29kZS4KPiAgICovCj4gIHN0YXRpYyBp bmxpbmUgdm9pZCBkcm1fY29ubmVjdG9yX3VucmVmZXJlbmNlKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gIHsKPiAtCWRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZSgmY29ubmVj dG9yLT5iYXNlKTsKPiArCWRybV9jb25uZWN0b3JfcHV0KGNvbm5lY3Rvcik7Cj4gIH0KPiAgCj4g IGNvbnN0IGNoYXIgKmRybV9nZXRfY29ubmVjdG9yX3N0YXR1c19uYW1lKGVudW0gZHJtX2Nvbm5l Y3Rvcl9zdGF0dXMgc3RhdHVzKTsKPiBAQCAtOTA1LDcgKzkzMCw3IEBAIHZvaWQgZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXJfcHV0KHN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciAqaXRlcik7 Cj4gICAqCj4gICAqIE5vdGUgdGhhdCBAY29ubmVjdG9yIGlzIG9ubHkgdmFsaWQgd2l0aGluIHRo ZSBsaXN0IGJvZHksIGlmIHlvdSB3YW50IHRvIHVzZQo+ICAgKiBAY29ubmVjdG9yIGFmdGVyIGNh bGxpbmcgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfcHV0KCkgdGhlbiB5b3UgbmVlZCB0byBncmFi Cj4gLSAqIHlvdXIgb3duIHJlZmVyZW5jZSBmaXJzdCB1c2luZyBkcm1fY29ubmVjdG9yX3JlZmVy ZW5jZSgpLgo+ICsgKiB5b3VyIG93biByZWZlcmVuY2UgZmlyc3QgdXNpbmcgZHJtX2Nvbm5lY3Rv cl9nZXQoKS4KPiAgICovCj4gICNkZWZpbmUgZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNv bm5lY3RvciwgaXRlcikgXAo+ICAJd2hpbGUgKChjb25uZWN0b3IgPSBkcm1fY29ubmVjdG9yX2xp c3RfaXRlcl9uZXh0KGl0ZXIpKSkKPiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jb2NjaW5lbGxlL2Fw aS9kcm0tZ2V0LXB1dC5jb2NjaSBiL3NjcmlwdHMvY29jY2luZWxsZS9hcGkvZHJtLWdldC1wdXQu Y29jY2kKPiBpbmRleCBhMzc0MjQ0N2M5ODEuLjhhNGMyY2I3ODg5ZSAxMDA2NDQKPiAtLS0gYS9z Y3JpcHRzL2NvY2NpbmVsbGUvYXBpL2RybS1nZXQtcHV0LmNvY2NpCj4gKysrIGIvc2NyaXB0cy9j b2NjaW5lbGxlL2FwaS9kcm0tZ2V0LXB1dC5jb2NjaQo+IEBAIC0yMCw2ICsyMCwxMiBAQCBleHBy ZXNzaW9uIG9iamVjdDsKPiAgfAo+ICAtIGRybV9tb2RlX29iamVjdF91bnJlZmVyZW5jZShvYmpl Y3QpCj4gICsgZHJtX21vZGVfb2JqZWN0X3B1dChvYmplY3QpCj4gK3wKPiArLSBkcm1fY29ubmVj dG9yX3JlZmVyZW5jZShvYmplY3QpCj4gKysgZHJtX2Nvbm5lY3Rvcl9nZXQob2JqZWN0KQo+ICt8 Cj4gKy0gZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZShvYmplY3QpCj4gKysgZHJtX2Nvbm5lY3Rv cl9wdXQob2JqZWN0KQo+ICApCj4gIAo+ICBAciBkZXBlbmRzIG9uIHJlcG9ydEAKPiBAQCAtMzEs NiArMzcsMTAgQEAgcG9zaXRpb24gcDsKPiAgZHJtX21vZGVfb2JqZWN0X3VucmVmZXJlbmNlQHAo b2JqZWN0KQo+ICB8Cj4gIGRybV9tb2RlX29iamVjdF9yZWZlcmVuY2VAcChvYmplY3QpCj4gK3wK PiArZHJtX2Nvbm5lY3Rvcl91bnJlZmVyZW5jZUBwKG9iamVjdCkKPiArfAo+ICtkcm1fY29ubmVj dG9yX3JlZmVyZW5jZUBwKG9iamVjdCkKPiAgKQo+ICAKPiAgQHNjcmlwdDpweXRob24gZGVwZW5k cyBvbiByZXBvcnRACj4gLS0gCj4gMi4xMS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdp bmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==