From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 5/6] drm: Introduce drm_gem_object_{get,put}() Date: Wed, 8 Feb 2017 14:41:33 -0500 Message-ID: <20170208194133.GI14321@art_vandelay> References: <20170208182408.5442-1-thierry.reding@gmail.com> <20170208182408.5442-6-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-x22d.google.com (mail-qk0-x22d.google.com [IPv6:2607:f8b0:400d:c09::22d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 660436E9A3 for ; Wed, 8 Feb 2017 19:41:37 +0000 (UTC) Received: by mail-qk0-x22d.google.com with SMTP id 11so133909270qkl.3 for ; Wed, 08 Feb 2017 11:41:37 -0800 (PST) Content-Disposition: inline In-Reply-To: <20170208182408.5442-6-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 T24gV2VkLCBGZWIgMDgsIDIwMTcgYXQgMDc6MjQ6MDdQTSArMDEwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBG b3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciByZWZlcmVuY2UgY291bnRpbmcgQVBJcyBpbiB0aGUg a2VybmVsLCBhZGQKPiBkcm1fZ2VtX29iamVjdF9nZXQoKSBhbmQgZHJtX2dlbV9vYmplY3RfcHV0 KCksIGFzIHdlbGwgYXMgYW4gdW5sb2NrZWQKPiB2YXJpYW50IG9mIHRoZSBsYXR0ZXIsIHRvIHJl ZmVyZW5jZSBjb3VudCBHRU0gYnVmZmVyIG9iamVjdHMuCj4gCj4gQ29tcGF0aWJpbGl0eSBhbGlh c2VzIGFyZSBhZGRlZCB0byBrZWVwIGV4aXN0aW5nIGNvZGUgd29ya2luZy4gVG8gaGVscAo+IHNw ZWVkIHVwIHRoZSB0cmFuc2l0aW9uLCBhbGwgdGhlIGluc3RhbmNlcyBvZiB0aGUgb2xkIGZ1bmN0 aW9ucyBpbiB0aGUKPiBEUk0gY29yZSBhcmUgYWxyZWFkeSByZXBsYWNlZCBpbiB0aGlzIGNvbW1p dC4KPiAKPiBUaGUgZXhpc3Rpbmcgc2VtYW50aWMgcGF0Y2ggZm9yIHRoZSBEUk0gc3Vic3lzdGVt LXdpZGUgY29udmVyc2lvbiBpcwo+IGV4dGVuZGVkIHRvIGFjY291bnQgZm9yIHRoZXNlIG5ldyBo ZWxwZXJzLgo+IAoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3Jn PgoKPiBTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgo+ IC0tLQo+ICBEb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0ICAgICAgICAgICAgIHwgMTQgKysr LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jICAgICAgfCAxNiArKyst LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAgICAgICAgfCA0NCArKysr KysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jICAg ICB8IDEwICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jICAgICAgICAgICAgICB8 IDEwICsrLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2dlbS5oICAgICAgICAgICAgICAgICAgICB8IDgw ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gIHNjcmlwdHMvY29jY2luZWxsZS9h cGkvZHJtLWdldC1wdXQuY29jY2kgfCAyMCArKysrKysrKwo+ICA3IGZpbGVzIGNoYW5nZWQsIDEz MCBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1l bnRhdGlvbi9ncHUvZHJtLW1tLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKPiBp bmRleCBmNTc2MGIxNDBmMTMuLmZkMzU5OThhY2VmYyAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0 aW9uL2dwdS9kcm0tbW0ucnN0Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdAo+ IEBAIC0xODMsMTQgKzE4MywxMiBAQCBHRU0gT2JqZWN0cyBMaWZldGltZQo+ICAtLS0tLS0tLS0t LS0tLS0tLS0tLQo+ICAKPiAgQWxsIEdFTSBvYmplY3RzIGFyZSByZWZlcmVuY2UtY291bnRlZCBi eSB0aGUgR0VNIGNvcmUuIFJlZmVyZW5jZXMgY2FuIGJlCj4gLWFjcXVpcmVkIGFuZCByZWxlYXNl IGJ5IDpjOmZ1bmM6YGNhbGxpbmcKPiAtZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKClgIGFuZAo+ IC06YzpmdW5jOmBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpYCByZXNwZWN0aXZlbHkuIFRo ZSBjYWxsZXIKPiAtbXVzdCBob2xkIHRoZSA6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2RldmljZSA8ZHJt X2RldmljZT5gCj4gLXN0cnVjdF9tdXRleCBsb2NrIHdoZW4gY2FsbGluZwo+IC06YzpmdW5jOmBk cm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoKWAuIEFzIGEgY29udmVuaWVuY2UsIEdFTQo+IC1wcm92 aWRlcyA6YzpmdW5jOmBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZCgpYAo+IC1m dW5jdGlvbnMgdGhhdCBjYW4gYmUgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jay4KPiAr YWNxdWlyZWQgYW5kIHJlbGVhc2UgYnkgOmM6ZnVuYzpgY2FsbGluZyBkcm1fZ2VtX29iamVjdF9n ZXQoKWAgYW5kCj4gKzpjOmZ1bmM6YGRybV9nZW1fb2JqZWN0X3B1dCgpYCByZXNwZWN0aXZlbHku IFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZQo+ICs6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2RldmljZSA8 ZHJtX2RldmljZT5gIHN0cnVjdF9tdXRleCBsb2NrIHdoZW4gY2FsbGluZwo+ICs6YzpmdW5jOmBk cm1fZ2VtX29iamVjdF9nZXQoKWAuIEFzIGEgY29udmVuaWVuY2UsIEdFTSBwcm92aWRlcwo+ICs6 YzpmdW5jOmBkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoKWAgZnVuY3Rpb25zIHRoYXQgY2Fu IGJlIGNhbGxlZCB3aXRob3V0Cj4gK2hvbGRpbmcgdGhlIGxvY2suCj4gIAo+ICBXaGVuIHRoZSBs YXN0IHJlZmVyZW5jZSB0byBhIEdFTSBvYmplY3QgaXMgcmVsZWFzZWQgdGhlIEdFTSBjb3JlIGNh bGxzCj4gIHRoZSA6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2RyaXZlciA8ZHJtX2RyaXZlcj5gIGdlbV9m cmVlX29iamVjdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxw ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCj4gaW5kZXggNTk2ZmFi ZjE4YzNlLi5lY2NjMDdkMjA5MjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9jbWFfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIu Ywo+IEBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBkcm1fZmJfY21hX2Rlc3Ryb3koc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIpCj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewo+ICAJ CWlmIChmYl9jbWEtPm9ialtpXSkKPiAtCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5s b2NrZWQoJmZiX2NtYS0+b2JqW2ldLT5iYXNlKTsKPiArCQkJZHJtX2dlbV9vYmplY3RfcHV0X3Vu bG9ja2VkKCZmYl9jbWEtPm9ialtpXS0+YmFzZSk7Cj4gIAl9Cj4gIAo+ICAJZHJtX2ZyYW1lYnVm ZmVyX2NsZWFudXAoZmIpOwo+IEBAIC0xOTAsNyArMTkwLDcgQEAgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZHJtX2ZiX2NtYV9jcmVhdGVfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAJCWlmICghb2JqKSB7Cj4gIAkJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8gbG9v a3VwIEdFTSBvYmplY3RcbiIpOwo+ICAJCQlyZXQgPSAtRU5YSU87Cj4gLQkJCWdvdG8gZXJyX2dl bV9vYmplY3RfdW5yZWZlcmVuY2U7Cj4gKwkJCWdvdG8gZXJyX2dlbV9vYmplY3RfcHV0Owo+ICAJ CX0KPiAgCj4gIAkJbWluX3NpemUgPSAoaGVpZ2h0IC0gMSkgKiBtb2RlX2NtZC0+cGl0Y2hlc1tp XQo+IEBAIC0xOTgsOSArMTk4LDkgQEAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZHJtX2ZiX2Nt YV9jcmVhdGVfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgKyBtb2Rl X2NtZC0+b2Zmc2V0c1tpXTsKPiAgCj4gIAkJaWYgKG9iai0+c2l6ZSA8IG1pbl9zaXplKSB7Cj4g LQkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gKwkJCWRybV9n ZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwo+ICAJCQlyZXQgPSAtRUlOVkFMOwo+IC0JCQln b3RvIGVycl9nZW1fb2JqZWN0X3VucmVmZXJlbmNlOwo+ICsJCQlnb3RvIGVycl9nZW1fb2JqZWN0 X3B1dDsKPiAgCQl9Cj4gIAkJb2Jqc1tpXSA9IHRvX2RybV9nZW1fY21hX29iaihvYmopOwo+ICAJ fQo+IEBAIC0yMDgsMTQgKzIwOCwxNCBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpkcm1fZmJf Y21hX2NyZWF0ZV93aXRoX2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlmYl9jbWEg PSBkcm1fZmJfY21hX2FsbG9jKGRldiwgbW9kZV9jbWQsIG9ianMsIGksIGZ1bmNzKTsKPiAgCWlm IChJU19FUlIoZmJfY21hKSkgewo+ICAJCXJldCA9IFBUUl9FUlIoZmJfY21hKTsKPiAtCQlnb3Rv IGVycl9nZW1fb2JqZWN0X3VucmVmZXJlbmNlOwo+ICsJCWdvdG8gZXJyX2dlbV9vYmplY3RfcHV0 Owo+ICAJfQo+ICAKPiAgCXJldHVybiAmZmJfY21hLT5mYjsKPiAgCj4gLWVycl9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlOgo+ICtlcnJfZ2VtX29iamVjdF9wdXQ6Cj4gIAlmb3IgKGktLTsgaSA+PSAw OyBpLS0pCj4gLQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoJm9ianNbaV0t PmJhc2UpOwo+ICsJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgmb2Jqc1tpXS0+YmFzZSk7 Cj4gIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9m Yl9jbWFfY3JlYXRlX3dpdGhfZnVuY3MpOwo+IEBAIC00NzcsNyArNDc3LDcgQEAgZHJtX2ZiZGV2 X2NtYV9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAgZXJyX2ZiX2luZm9f ZGVzdHJveToKPiAgCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoaGVscGVyKTsKPiAgZXJyX2dl bV9mcmVlX29iamVjdDoKPiAtCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZv YmotPmJhc2UpOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCZvYmotPmJhc2UpOwo+ ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKPiBpbmRleCBiYzkzZGUzMDg2NzMu LmIxZTI4Yzk0NDYzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwo+IEBAIC0yMTgsNyArMjE4LDcgQEAgc3Rh dGljIHZvaWQgZHJtX2dlbV9vYmplY3RfZXhwb3J0ZWRfZG1hX2J1Zl9mcmVlKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1kcm1fZ2VtX29iamVj dF9oYW5kbGVfdW5yZWZlcmVuY2VfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop Cj4gK2RybV9nZW1fb2JqZWN0X2hhbmRsZV9wdXRfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmopCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKPiAg CWJvb2wgZmluYWwgPSBmYWxzZTsKPiBAQCAtMjQxLDcgKzI0MSw3IEBAIGRybV9nZW1fb2JqZWN0 X2hhbmRsZV91bnJlZmVyZW5jZV91bmxvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikK PiAgCW11dGV4X3VubG9jaygmZGV2LT5vYmplY3RfbmFtZV9sb2NrKTsKPiAgCj4gIAlpZiAoZmlu YWwpCj4gLQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKPiArCQlk cm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKPiAgfQo+ICAKPiAgLyoKPiBAQCAtMjYy LDcgKzI2Miw3IEBAIGRybV9nZW1fb2JqZWN0X3JlbGVhc2VfaGFuZGxlKGludCBpZCwgdm9pZCAq cHRyLCB2b2lkICpkYXRhKQo+ICAJaWYgKGRldi0+ZHJpdmVyLT5nZW1fY2xvc2Vfb2JqZWN0KQo+ ICAJCWRldi0+ZHJpdmVyLT5nZW1fY2xvc2Vfb2JqZWN0KG9iaiwgZmlsZV9wcml2KTsKPiAgCj4g LQlkcm1fZ2VtX29iamVjdF9oYW5kbGVfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKPiArCWRy bV9nZW1fb2JqZWN0X2hhbmRsZV9wdXRfdW5sb2NrZWQob2JqKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+IEBAIC0zNTIsNyArMzUyLDcgQEAgZHJtX2dlbV9oYW5kbGVfY3JlYXRlX3RhaWwoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4gIAo+ICAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2Vk KCZkZXYtPm9iamVjdF9uYW1lX2xvY2spKTsKPiAgCWlmIChvYmotPmhhbmRsZV9jb3VudCsrID09 IDApCj4gLQkJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9iaik7Cj4gKwkJZHJtX2dlbV9vYmpl Y3RfZ2V0KG9iaik7Cj4gIAo+ICAJLyoKPiAgCSAqIEdldCB0aGUgdXNlci12aXNpYmxlIGhhbmRs ZSB1c2luZyBpZHIuICBQcmVsb2FkIGFuZCBwZXJmb3JtCj4gQEAgLTM5Miw3ICszOTIsNyBAQCBk cm1fZ2VtX2hhbmRsZV9jcmVhdGVfdGFpbChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiAg CWlkcl9yZW1vdmUoJmZpbGVfcHJpdi0+b2JqZWN0X2lkciwgaGFuZGxlKTsKPiAgCXNwaW5fdW5s b2NrKCZmaWxlX3ByaXYtPnRhYmxlX2xvY2spOwo+ICBlcnJfdW5yZWY6Cj4gLQlkcm1fZ2VtX29i amVjdF9oYW5kbGVfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKPiArCWRybV9nZW1fb2JqZWN0 X2hhbmRsZV9wdXRfdW5sb2NrZWQob2JqKTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAg LTYwNiw3ICs2MDYsNyBAQCBkcm1fZ2VtX29iamVjdF9sb29rdXAoc3RydWN0IGRybV9maWxlICpm aWxwLCB1MzIgaGFuZGxlKQo+ICAJLyogQ2hlY2sgaWYgd2UgY3VycmVudGx5IGhhdmUgYSByZWZl cmVuY2Ugb24gdGhlIG9iamVjdCAqLwo+ICAJb2JqID0gaWRyX2ZpbmQoJmZpbHAtPm9iamVjdF9p ZHIsIGhhbmRsZSk7Cj4gIAlpZiAob2JqKQo+IC0JCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShv YmopOwo+ICsJCWRybV9nZW1fb2JqZWN0X2dldChvYmopOwo+ICAKPiAgCXNwaW5fdW5sb2NrKCZm aWxwLT50YWJsZV9sb2NrKTsKPiAgCj4gQEAgLTY4Myw3ICs2ODMsNyBAQCBkcm1fZ2VtX2ZsaW5r X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAo+ICBlcnI6Cj4g IAltdXRleF91bmxvY2soJmRldi0+b2JqZWN0X25hbWVfbG9jayk7Cj4gLQlkcm1fZ2VtX29iamVj dF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9j a2VkKG9iaik7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBAIC03MTMsNyArNzEzLDcgQEAg ZHJtX2dlbV9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g IAltdXRleF9sb2NrKCZkZXYtPm9iamVjdF9uYW1lX2xvY2spOwo+ICAJb2JqID0gaWRyX2ZpbmQo JmRldi0+b2JqZWN0X25hbWVfaWRyLCAoaW50KSBhcmdzLT5uYW1lKTsKPiAgCWlmIChvYmopIHsK PiAtCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqKTsKPiArCQlkcm1fZ2VtX29iamVjdF9n ZXQob2JqKTsKPiAgCX0gZWxzZSB7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZkZXYtPm9iamVjdF9uYW1l X2xvY2spOwo+ICAJCXJldHVybiAtRU5PRU5UOwo+IEBAIC03MjEsNyArNzIxLDcgQEAgZHJtX2dl bV9vcGVuX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAo+ICAJ LyogZHJtX2dlbV9oYW5kbGVfY3JlYXRlX3RhaWwgdW5sb2NrcyBkZXYtPm9iamVjdF9uYW1lX2xv Y2suICovCj4gIAlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGVfdGFpbChmaWxlX3ByaXYsIG9i aiwgJmhhbmRsZSk7Cj4gLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmop Owo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+IEBAIC04MDksMTYgKzgwOSwxNiBAQCBkcm1fZ2VtX29iamVjdF9m cmVlKHN0cnVjdCBrcmVmICprcmVmKQo+ICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X2Zy ZWUpOwo+ICAKPiAgLyoqCj4gLSAqIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2Vk IC0gcmVsZWFzZSBhIEdFTSBCTyByZWZlcmVuY2UKPiArICogZHJtX2dlbV9vYmplY3RfcHV0X3Vu bG9ja2VkIC0gZHJvcCBhIEdFTSBidWZmZXIgb2JqZWN0IHJlZmVyZW5jZQo+ICAgKiBAb2JqOiBH RU0gYnVmZmVyIG9iamVjdAo+ICAgKgo+ICAgKiBUaGlzIHJlbGVhc2VzIGEgcmVmZXJlbmNlIHRv IEBvYmouIENhbGxlcnMgbXVzdCBub3QgaG9sZCB0aGUKPiAgICogJmRybV9kZXZpY2Uuc3RydWN0 X211dGV4IGxvY2sgd2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCj4gICAqCj4gLSAqIFNlZSBh bHNvIF9fZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoKS4KPiArICogU2VlIGFsc28gX19kcm1f Z2VtX29iamVjdF9wdXQoKS4KPiAgICovCj4gIHZvaWQKPiAtZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2VfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gK2RybV9nZW1fb2Jq ZWN0X3B1dF91bmxvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAgewo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldjsKPiAgCj4gQEAgLTgzNCwxMCArODM0LDEwIEBAIGRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ ICAJCQkJJmRldi0+c3RydWN0X211dGV4KSkKPiAgCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiAgfQo+IC1FWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNl X3VubG9ja2VkKTsKPiArRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQp Owo+ICAKPiAgLyoqCj4gLSAqIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlIC0gcmVsZWFzZSBh IEdFTSBCTyByZWZlcmVuY2UKPiArICogZHJtX2dlbV9vYmplY3RfcHV0IC0gcmVsZWFzZSBhIEdF TSBidWZmZXIgb2JqZWN0IHJlZmVyZW5jZQo+ICAgKiBAb2JqOiBHRU0gYnVmZmVyIG9iamVjdAo+ ICAgKgo+ICAgKiBUaGlzIHJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIEBvYmouIENhbGxlcnMgbXVz dCBob2xkIHRoZQo+IEBAIC04NDUsMTAgKzg0NSwxMCBAQCBFWFBPUlRfU1lNQk9MKGRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKTsKPiAgICogZHJpdmVyIGRvZXNuJ3QgdXNlICZk cm1fZGV2aWNlLnN0cnVjdF9tdXRleCBmb3IgYW55dGhpbmcuCj4gICAqCj4gICAqIEZvciBkcml2 ZXJzIG5vdCBlbmN1bWJlcmVkIHdpdGggbGVnYWN5IGxvY2tpbmcgdXNlCj4gLSAqIGRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCkgaW5zdGVhZC4KPiArICogZHJtX2dlbV9vYmpl Y3RfcHV0X3VubG9ja2VkKCkgaW5zdGVhZC4KPiAgICovCj4gIHZvaWQKPiAtZHJtX2dlbV9vYmpl Y3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gK2RybV9nZW1fb2Jq ZWN0X3B1dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiAgewo+ICAJaWYgKG9iaikgewo+ ICAJCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmb2JqLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+ IEBAIC04NTYsNyArODU2LDcgQEAgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCj4gIAkJa3JlZl9wdXQoJm9iai0+cmVmY291bnQsIGRybV9nZW1f b2JqZWN0X2ZyZWUpOwo+ICAJfQo+ICB9Cj4gLUVYUE9SVF9TWU1CT0woZHJtX2dlbV9vYmplY3Rf dW5yZWZlcmVuY2UpOwo+ICtFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X3B1dCk7Cj4gIAo+ ICAvKioKPiAgICogZHJtX2dlbV92bV9vcGVuIC0gdm1hLT5vcHMtPm9wZW4gaW1wbGVtZW50YXRp b24gZm9yIEdFTQo+IEBAIC04NjksNyArODY5LDcgQEAgdm9pZCBkcm1fZ2VtX3ZtX29wZW4oc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqID0gdm1hLT52bV9wcml2YXRlX2RhdGE7Cj4gIAo+IC0JZHJtX2dlbV9vYmplY3RfcmVmZXJl bmNlKG9iaik7Cj4gKwlkcm1fZ2VtX29iamVjdF9nZXQob2JqKTsKPiAgfQo+ICBFWFBPUlRfU1lN Qk9MKGRybV9nZW1fdm1fb3Blbik7Cj4gIAo+IEBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBkcm1f Z2VtX3ZtX2Nsb3NlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOwo+ICAKPiAtCWRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gKwlkcm1fZ2VtX29iamVjdF9w dXRfdW5sb2NrZWQob2JqKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fdm1fY2xvc2Up Owo+ICAKPiBAQCAtOTM1LDcgKzkzNSw3IEBAIGludCBkcm1fZ2VtX21tYXBfb2JqKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBsb25nIG9ial9zaXplLAo+ICAJICogKHdoaWNo IHNob3VsZCBoYXBwZW4gd2hldGhlciB0aGUgdm1hIHdhcyBjcmVhdGVkIGJ5IHRoaXMgY2FsbCwg b3IKPiAgCSAqIGJ5IGEgdm1fb3BlbiBkdWUgdG8gbXJlbWFwIG9yIHBhcnRpYWwgdW5tYXAgb3Ig d2hhdGV2ZXIpLgo+ICAJICovCj4gLQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqKTsKPiAr CWRybV9nZW1fb2JqZWN0X2dldChvYmopOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTk5 MiwxNCArOTkyLDE0IEBAIGludCBkcm1fZ2VtX21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWlmICgh ZHJtX3ZtYV9ub2RlX2lzX2FsbG93ZWQobm9kZSwgcHJpdikpIHsKPiAtCQlkcm1fZ2VtX29iamVj dF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOwo+ICsJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZChvYmopOwo+ICAJCXJldHVybiAtRUFDQ0VTOwo+ICAJfQo+ICAKPiAgCXJldCA9IGRybV9n ZW1fbW1hcF9vYmoob2JqLCBkcm1fdm1hX25vZGVfc2l6ZShub2RlKSA8PCBQQUdFX1NISUZULAo+ ICAJCQkgICAgICAgdm1hKTsKPiAgCj4gLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxv Y2tlZChvYmopOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gIAo+ICAJ cmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9j bWFfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMKPiBpbmRl eCBmN2JhMzJiZmUzOWIuLmJiOTY4ZTc2Nzc5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2dlbV9jbWFfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9j bWFfaGVscGVyLmMKPiBAQCAtMTIxLDcgKzEyMSw3IEBAIHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmpl Y3QgKmRybV9nZW1fY21hX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAo+ICAJcmV0dXJu IGNtYV9vYmo7Cj4gIAo+ICBlcnJvcjoKPiAtCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3Vu bG9ja2VkKCZjbWFfb2JqLT5iYXNlKTsKPiArCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgm Y21hX29iai0+YmFzZSk7Cj4gIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICB9Cj4gIEVYUE9SVF9T WU1CT0xfR1BMKGRybV9nZW1fY21hX2NyZWF0ZSk7Cj4gQEAgLTE2Myw3ICsxNjMsNyBAQCBkcm1f Z2VtX2NtYV9jcmVhdGVfd2l0aF9oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4g IAkgKi8KPiAgCXJldCA9IGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlX3ByaXYsIGdlbV9vYmos IGhhbmRsZSk7Cj4gIAkvKiBkcm9wIHJlZmVyZW5jZSBmcm9tIGFsbG9jYXRlIC0gaGFuZGxlIGhv bGRzIGl0IG5vdy4gKi8KPiAtCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdl bV9vYmopOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGdlbV9vYmopOwo+ICAJaWYg KHJldCkKPiAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAKPiBAQCAtMjkzLDcgKzI5Myw3IEBA IGludCBkcm1fZ2VtX2NtYV9kdW1iX21hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYsCj4gIAo+ICAJKm9mZnNldCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmZ2VtX29iai0+ dm1hX25vZGUpOwo+ICAKPiAtCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdl bV9vYmopOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGdlbV9vYmopOwo+ICAKPiAg CXJldHVybiAwOwo+ICB9Cj4gQEAgLTQxNiwxMyArNDE2LDEzIEBAIHVuc2lnbmVkIGxvbmcgZHJt X2dlbV9jbWFfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbHAsCj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFkcm1fdm1hX25vZGVfaXNfYWxsb3dlZChub2RlLCBwcml2 KSkgewo+IC0JCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gKwkJ ZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gIAkJcmV0dXJuIC1FQUNDRVM7Cj4g IAl9Cj4gIAo+ICAJY21hX29iaiA9IHRvX2RybV9nZW1fY21hX29iaihvYmopOwo+ICAKPiAtCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gKwlkcm1fZ2VtX29iamVj dF9wdXRfdW5sb2NrZWQob2JqKTsKPiAgCj4gIAlyZXR1cm4gY21hX29iai0+dmFkZHIgPyAodW5z aWduZWQgbG9uZyljbWFfb2JqLT52YWRkciA6IC1FSU5WQUw7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5j Cj4gaW5kZXggMjVhYTQ1NThmMWI1Li44NjZiMjk0ZTdjNjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9wcmltZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5j Cj4gQEAgLTMxOCw3ICszMTgsNyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZHJtX2dlbV9kbWFidWZfZXhw b3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJuIGRtYV9idWY7Cj4gIAo+ICAJ ZHJtX2Rldl9yZWYoZGV2KTsKPiAtCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShleHBfaW5mby0+ cHJpdik7Cj4gKwlkcm1fZ2VtX29iamVjdF9nZXQoZXhwX2luZm8tPnByaXYpOwo+ICAKPiAgCXJl dHVybiBkbWFfYnVmOwo+ICB9Cj4gQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIGRybV9nZW1fZG1h YnVmX3JlbGVhc2Uoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2JqLT5kZXY7Cj4gIAo+ICAJLyogZHJvcCB0aGUgcmVmZXJlbmNlIG9uIHRoZSBl eHBvcnQgZmQgaG9sZHMgKi8KPiAtCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2Vk KG9iaik7Cj4gKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKPiAgCj4gIAlkcm1f ZGV2X3VucmVmKGRldik7Cj4gIH0KPiBAQCAtNTg1LDcgKzU4NSw3IEBAIGludCBkcm1fZ2VtX3By aW1lX2hhbmRsZV90b19mZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICBmYWlsX3B1dF9kbWFi dWY6Cj4gIAlkbWFfYnVmX3B1dChkbWFidWYpOwo+ICBvdXQ6Cj4gLQlkcm1fZ2VtX29iamVjdF91 bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOwo+ICsJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2Vk KG9iaik7Cj4gIG91dF91bmxvY2s6Cj4gIAltdXRleF91bmxvY2soJmZpbGVfcHJpdi0+cHJpbWUu bG9jayk7Cj4gIAo+IEBAIC02MTYsNyArNjE2LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpk cm1fZ2VtX3ByaW1lX2ltcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgKiBJbXBv cnRpbmcgZG1hYnVmIGV4cG9ydGVkIGZyb20gb3V0IG93biBnZW0gaW5jcmVhc2VzCj4gIAkJCSAq IHJlZmNvdW50IG9uIGdlbSBpdHNlbGYgaW5zdGVhZCBvZiBmX2NvdW50IG9mIGRtYWJ1Zi4KPiAg CQkJICovCj4gLQkJCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShvYmopOwo+ICsJCQlkcm1fZ2Vt X29iamVjdF9nZXQob2JqKTsKPiAgCQkJcmV0dXJuIG9iajsKPiAgCQl9Cj4gIAl9Cj4gQEAgLTcw NCw3ICs3MDQsNyBAQCBpbnQgZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCj4gIAkvKiBfaGFuZGxlX2NyZWF0ZV90YWlsIHVuY29uZGl0aW9uYWxs eSB1bmxvY2tzIGRldi0+b2JqZWN0X25hbWVfbG9jay4gKi8KPiAgCXJldCA9IGRybV9nZW1faGFu ZGxlX2NyZWF0ZV90YWlsKGZpbGVfcHJpdiwgb2JqLCBoYW5kbGUpOwo+IC0JZHJtX2dlbV9vYmpl Y3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKPiArCWRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZChvYmopOwo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIG91dF9wdXQ7Cj4gIAo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmggYi9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKPiBpbmRl eCA0NDlhNDFiNTZmZmMuLjNiMmEyOGY3ZjQ5ZiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fZ2VtLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKPiBAQCAtNDgsOSArNDgsOSBA QCBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qgewo+ICAJICoKPiAgCSAqIFJlZmVyZW5jZSBjb3VudCBv ZiB0aGlzIG9iamVjdAo+ICAJICoKPiAtCSAqIFBsZWFzZSB1c2UgZHJtX2dlbV9vYmplY3RfcmVm ZXJlbmNlKCkgdG8gYWNxdWlyZSBhbmQKPiAtCSAqIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNl KCkgb3IgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoKQo+IC0JICogdG8gcmVs ZWFzZSBhIHJlZmVyZW5jZSB0byBhIEdFTSBidWZmZXIgb2JqZWN0Lgo+ICsJICogUGxlYXNlIHVz ZSBkcm1fZ2VtX29iamVjdF9nZXQoKSB0byBhY3F1aXJlIGFuZCBkcm1fZ2VtX29iamVjdF9wdXQo KQo+ICsJICogb3IgZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCkgdG8gcmVsZWFzZSBhIHJl ZmVyZW5jZSB0byBhIEdFTQo+ICsJICogYnVmZmVyIG9iamVjdC4KPiAgCSAqLwo+ICAJc3RydWN0 IGtyZWYgcmVmY291bnQ7Cj4gIAo+IEBAIC0xODcsNDIgKzE4Nyw5MCBAQCBpbnQgZHJtX2dlbV9t bWFwX29iaihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgbG9uZyBvYmpfc2l6 ZSwKPiAgaW50IGRybV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEpOwo+ICAKPiAgLyoqCj4gLSAqIGRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSAt IGFjcXVpcmUgYSBHRU0gQk8gcmVmZXJlbmNlCj4gKyAqIGRybV9nZW1fb2JqZWN0X2dldCAtIGFj cXVpcmUgYSBHRU0gYnVmZmVyIG9iamVjdCByZWZlcmVuY2UKPiAgICogQG9iajogR0VNIGJ1ZmZl ciBvYmplY3QKPiAgICoKPiAtICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0 byBAb2JqLiBJdCBpcyBpbGxlZ2FsIHRvIGNhbGwgdGhpcwo+IC0gKiB3aXRob3V0IGFscmVhZHkg aG9sZGluZyBhIHJlZmVyZW5jZS4gTm8gbG9ja3MgcmVxdWlyZWQuCj4gKyAqIFRoaXMgZnVuY3Rp b24gYWNxdWlyZXMgYW4gYWRkaXRpb25hbCByZWZlcmVuY2UgdG8gQG9iai4gSXQgaXMgaWxsZWdh bCB0bwo+ICsgKiBjYWxsIHRoaXMgd2l0aG91dCBhbHJlYWR5IGhvbGRpbmcgYSByZWZlcmVuY2Uu IE5vIGxvY2tzIHJlcXVpcmVkLgo+ICAgKi8KPiAtc3RhdGljIGlubGluZSB2b2lkCj4gLWRybV9n ZW1fb2JqZWN0X3JlZmVyZW5jZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiArc3RhdGlj IGlubGluZSB2b2lkIGRybV9nZW1fb2JqZWN0X2dldChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aikKPiAgewo+ICAJa3JlZl9nZXQoJm9iai0+cmVmY291bnQpOwo+ICB9Cj4gIAo+ICAvKioKPiAt ICogX19kcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSAtIHJhdyBmdW5jdGlvbiB0byByZWxlYXNl IGEgR0VNIEJPIHJlZmVyZW5jZQo+ICsgKiBfX2RybV9nZW1fb2JqZWN0X3B1dCAtIHJhdyBmdW5j dGlvbiB0byByZWxlYXNlIGEgR0VNIGJ1ZmZlciBvYmplY3QgcmVmZXJlbmNlCj4gICAqIEBvYmo6 IEdFTSBidWZmZXIgb2JqZWN0Cj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8g YmUgdXNlZCBieSBkcml2ZXJzIHdoaWNoIGFyZSBub3QgZW5jdW1iZXJlZCB3aXRoCj4gICAqICZk cm1fZGV2aWNlLnN0cnVjdF9tdXRleCBsZWdhY3kgbG9ja2luZyBhbmQgd2hpY2ggYXJlIHVzaW5n IHRoZQo+ICAgKiBnZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQgY2FsbGJhY2suIEl0IGF2b2lkcyBh bGwgdGhlIGxvY2tpbmcgY2hlY2tzIGFuZAo+IC0gKiBsb2NraW5nIG92ZXJoZWFkIG9mIGRybV9n ZW1fb2JqZWN0X3VucmVmZXJlbmNlKCkgYW5kCj4gLSAqIGRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlX3VubG9ja2VkKCkuCj4gKyAqIGxvY2tpbmcgb3ZlcmhlYWQgb2YgZHJtX2dlbV9vYmplY3Rf cHV0KCkgYW5kIGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgpLgo+ICAgKgo+ICAgKiBEcml2 ZXJzIHNob3VsZCBuZXZlciBjYWxsIHRoaXMgZGlyZWN0bHkgaW4gdGhlaXIgY29kZS4gSW5zdGVh ZCB0aGV5IHNob3VsZAo+IC0gKiB3cmFwIGl0IHVwIGludG8gYSBgYGRyaXZlcl9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlKHN0cnVjdCBkcml2ZXJfZ2VtX29iamVjdAo+IC0gKiAqb2JqKWBgIHdyYXBw ZXIgZnVuY3Rpb24sIGFuZCB1c2UgdGhhdC4gU2hhcmVkIGNvZGUgc2hvdWxkIG5ldmVyIGNhbGwg dGhpcywgdG8KPiArICogd3JhcCBpdCB1cCBpbnRvIGEgYGBkcml2ZXJfZ2VtX29iamVjdF9wdXQo c3RydWN0IGRyaXZlcl9nZW1fb2JqZWN0ICpvYmopYGAKPiArICogd3JhcHBlciBmdW5jdGlvbiwg YW5kIHVzZSB0aGF0LiBTaGFyZWQgY29kZSBzaG91bGQgbmV2ZXIgY2FsbCB0aGlzLCB0bwo+ICAg KiBhdm9pZCBicmVha2luZyBkcml2ZXJzIGJ5IGFjY2lkZW50IHdoaWNoIHN0aWxsIGRlcGVuZCB1 cG9uCj4gICAqICZkcm1fZGV2aWNlLnN0cnVjdF9tdXRleCBsb2NraW5nLgo+ICAgKi8KPiAgc3Rh dGljIGlubGluZSB2b2lkCj4gLV9fZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCj4gK19fZHJtX2dlbV9vYmplY3RfcHV0KHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKQo+ICB7Cj4gIAlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX2dlbV9v YmplY3RfZnJlZSk7Cj4gIH0KPiAgCj4gLXZvaWQgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Vf dW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+IC12b2lkIGRybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiArdm9pZCBkcm1f Z2VtX29iamVjdF9wdXRfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICt2 b2lkIGRybV9nZW1fb2JqZWN0X3B1dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gKwo+ ICsvKioKPiArICogZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlIC0gYWNxdWlyZSBhIEdFTSBidWZm ZXIgb2JqZWN0IHJlZmVyZW5jZQo+ICsgKiBAb2JqOiBHRU0gYnVmZmVyIG9iamVjdAo+ICsgKgo+ ICsgKiBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBhbGlhcyBmb3IgZHJtX2dlbV9vYmplY3RfZ2V0 KCkgYW5kIHNob3VsZCBub3QgYmUKPiArICogdXNlZCBieSBuZXcgY29kZS4KPiArICovCj4gK3N0 YXRpYyBpbmxpbmUgdm9pZCBkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopCj4gK3sKPiArCWRybV9nZW1fb2JqZWN0X2dldChvYmopOwo+ICt9Cj4gKwo+ ICsvKioKPiArICogX19kcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSAtIHJhdyBmdW5jdGlvbiB0 byByZWxlYXNlIGEgR0VNIGJ1ZmZlciBvYmplY3QKPiArICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZmVyZW5jZQo+ICsgKiBAb2JqOiBHRU0gYnVmZmVyIG9iamVjdAo+ICsgKgo+ ICsgKiBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBhbGlhcyBmb3IgX19kcm1fZ2VtX29iamVjdF9w dXQoKSBhbmQgc2hvdWxkIG5vdCBiZQo+ICsgKiB1c2VkIGJ5IG5ldyBjb2RlLgo+ICsgKi8KPiAr c3RhdGljIGlubGluZSB2b2lkIF9fZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCV9fZHJtX2dlbV9vYmplY3RfcHV0KG9iaik7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZCAt IHJlbGVhc2UgYSBHRU0gYnVmZmVyIG9iamVjdCByZWZlcmVuY2UKPiArICogQG9iajogR0VNIGJ1 ZmZlciBvYmplY3QKPiArICoKPiArICogVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgYWxpYXMgZm9y IGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZCgpIGFuZCBzaG91bGQKPiArICogbm90IGJlIHVz ZWQgYnkgbmV3IGNvZGUuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHZvaWQKPiArZHJtX2dlbV9v YmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4g K3sKPiArCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwo+ICt9Cj4gKwo+ICsvKioK PiArICogZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UgLSByZWxlYXNlIGEgR0VNIGJ1ZmZlciBv YmplY3QgcmVmZXJlbmNlCj4gKyAqIEBvYmo6IEdFTSBidWZmZXIgb2JqZWN0Cj4gKyAqCj4gKyAq IFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IGFsaWFzIGZvciBkcm1fZ2VtX29iamVjdF9wdXQoKSBh bmQgc2hvdWxkIG5vdCBiZQo+ICsgKiB1c2VkIGJ5IG5ldyBjb2RlLgo+ICsgKi8KPiArc3RhdGlj IGlubGluZSB2b2lkIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKQo+ICt7Cj4gKwlkcm1fZ2VtX29iamVjdF9wdXQob2JqKTsKPiArfQo+ICAKPiAg aW50IGRybV9nZW1faGFuZGxlX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiAg CQkJICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPiBkaWZmIC0tZ2l0IGEvc2NyaXB0cy9j b2NjaW5lbGxlL2FwaS9kcm0tZ2V0LXB1dC5jb2NjaSBiL3NjcmlwdHMvY29jY2luZWxsZS9hcGkv ZHJtLWdldC1wdXQuY29jY2kKPiBpbmRleCBmZDI5OGMyNGE0NjUuLjI0ODgyNTQ3YjRkMSAxMDA2 NDQKPiAtLS0gYS9zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2RybS1nZXQtcHV0LmNvY2NpCj4gKysr IGIvc2NyaXB0cy9jb2NjaW5lbGxlL2FwaS9kcm0tZ2V0LXB1dC5jb2NjaQo+IEBAIC0zMiw2ICsz MiwxOCBAQCBleHByZXNzaW9uIG9iamVjdDsKPiAgfAo+ICAtIGRybV9mcmFtZWJ1ZmZlcl91bnJl ZmVyZW5jZShvYmplY3QpCj4gICsgZHJtX2ZyYW1lYnVmZmVyX3B1dChvYmplY3QpCj4gK3wKPiAr LSBkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2Uob2JqZWN0KQo+ICsrIGRybV9nZW1fb2JqZWN0X2dl dChvYmplY3QpCj4gK3wKPiArLSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmplY3QpCj4g KysgZHJtX2dlbV9vYmplY3RfcHV0KG9iamVjdCkKPiArfAo+ICstIF9fZHJtX2dlbV9vYmplY3Rf dW5yZWZlcmVuY2Uob2JqZWN0KQo+ICsrIF9fZHJtX2dlbV9vYmplY3RfcHV0KG9iamVjdCkKPiAr fAo+ICstIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iamVjdCkKPiArKyBk cm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqZWN0KQo+ICApCj4gIAo+ICBAciBkZXBlbmRz IG9uIHJlcG9ydEAKPiBAQCAtNTEsNiArNjMsMTQgQEAgZHJtX2Nvbm5lY3Rvcl9yZWZlcmVuY2VA cChvYmplY3QpCj4gIGRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZUBwKG9iamVjdCkKPiAgfAo+ ICBkcm1fZnJhbWVidWZmZXJfcmVmZXJlbmNlQHAob2JqZWN0KQo+ICt8Cj4gK2RybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlQHAob2JqZWN0KQo+ICt8Cj4gK2RybV9nZW1fb2JqZWN0X3JlZmVyZW5j ZUBwKG9iamVjdCkKPiArfAo+ICtfX2RybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKG9iamVjdCkK PiArfAo+ICtkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmplY3QpCj4gICkK PiAgCj4gIEBzY3JpcHQ6cHl0aG9uIGRlcGVuZHMgb24gcmVwb3J0QAo+IC0tIAo+IDIuMTEuMQo+ IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJp LWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoK LS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=