From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 26/41] drm: Add reference counting to drm_atomic_state Date: Mon, 17 Oct 2016 08:20:18 +0200 Message-ID: <20161017062018.GT20761@phenom.ffwll.local> References: <20161014121833.439-1-chris@chris-wilson.co.uk> <20161014121833.439-27-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8AB8F6E266 for ; Mon, 17 Oct 2016 06:20:23 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id l131so21972613lfl.0 for ; Sun, 16 Oct 2016 23:20:23 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20161014121833.439-27-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBPY3QgMTQsIDIwMTYgYXQgMDE6MTg6MThQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IGRybV9hdG9taWNfc3RhdGUgaGFzIGEgY29tcGxpY2F0ZWQgc2luZ2xlIG93bmVyIG1v ZGVsIHRoYXQgdHJhY2tzIHRoZQo+IHNpbmdsZSByZWZlcmVuY2UgZnJvbSBhbGxvY2F0aW9uIHRo cm91Z2ggdG8gZGVzdHJ1Y3Rpb24gb24gYW5vdGhlcgo+IHRocmVhZCAtIG9yIHBlcmhhcHMgb24g YSBsb2NhbCBlcnJvciBwYXRoLiBXZSBjYW4gc2ltcGxpZnkgdGhpcyB0cmFja2luZwo+IGJ5IHVz aW5nIHJlZmVyZW5jZSBjb3VudGluZyAoYXQgYSBjb3N0IG9mIGEgZmV3IG1vcmUgYXRvbWljcyku IFRoaXMgaXMKPiBldmVuIG1vcmUgYmVuZWZpY2lhbCB3aGVuIHRoZSBsaWZldGltZSBvZiB0aGUg c3RhdGUgYmVjb21lcyBtb3JlCj4gY29udm9sdXRlZCB0aGFuIGJlaW5nIHBhc3NlZCB0byBhIHNp bmdsZSB3b3JrZXIgdGhyZWFkIGZvciB0aGUgY29tbWl0Lgo+IAo+IHYyOiBEb3VibGUgY2hlY2sg IWludGVsIGF0b21pY19jb21taXQgZnVuY3Rpb25zIGZvciBtaXNzaW5nIGdldHMKPiB2MzogVXBk YXRlIGtlcm5lbGRvY3MKPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZnds bC5jaD4KPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFJldmlld2VkLWJ5 OiBFcmljIEVuZ2VzdHJvbSA8ZXJpYy5lbmdlc3Ryb21AaW1ndGVjLmNvbT4KPiBSZXZpZXdlZC1i eTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+CgpBcHBsaWVkIHRvIGRybS1taXNj LCB0aGFua3MuCi1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9h dG1lbF9obGNkY19kYy5jIHwgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAg ICAgICAgICAgICAgICAgfCAyNSArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jICAgICAgICAgIHwgOTggKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jICAgICAgICAgICAgICB8ICA5ICstLQo+ICBk cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMgICAgICB8ICAzICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgIHwgIDUgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgfCAzMSArKysrKy0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgICAgfCAgNCArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAgICAgICB8ICAzICstCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jICAgICAgICAgICAgIHwgIDMgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuYyAgICAgICAgICAgfCAgMyArLQo+ICBk cml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2ttcy5jICAgICAgICB8ICAzICstCj4gIGRy aXZlcnMvZ3B1L2RybS9zdGkvc3RpX2Rydi5jICAgICAgICAgICAgICAgIHwgIDMgKy0KPiAgZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2RybS5jICAgICAgICAgICAgICAgICAgfCAgMyArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19kcnYuYyAgICAgICAgICB8ICAyIC0KPiAgZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfa21zLmMgICAgICAgICAgICAgICAgfCAgMyArLQo+ICBpbmNsdWRl L2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICAgICAgICAgICB8IDMxICsrKysrKysrLQo+ICBp bmNsdWRlL2RybS9kcm1fcGxhbmUuaCAgICAgICAgICAgICAgICAgICAgICB8ICAxIC0KPiAgMTgg ZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX2RjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNfZGMuYwo+IGluZGV4IDVm NDg0MzEwYmVlOS4uOWY2MjIyODk1MjEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h dG1lbC1obGNkYy9hdG1lbF9obGNkY19kYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVs LWhsY2RjL2F0bWVsX2hsY2RjX2RjLmMKPiBAQCAtNDY0LDcgKzQ2NCw3IEBAIGF0bWVsX2hsY2Rj X2RjX2F0b21pY19jb21wbGV0ZShzdHJ1Y3QgYXRtZWxfaGxjZGNfZGNfY29tbWl0ICpjb21taXQp Cj4gIAo+ICAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUp Owo+ICAKPiAtCWRybV9hdG9taWNfc3RhdGVfZnJlZShvbGRfc3RhdGUpOwo+ICsJZHJtX2F0b21p Y19zdGF0ZV9wdXQob2xkX3N0YXRlKTsKPiAgCj4gIAkvKiBDb21wbGV0ZSB0aGUgY29tbWl0LCB3 YWtlIHVwIGFueSB3YWl0ZXIuICovCj4gIAlzcGluX2xvY2soJmRjLT5jb21taXQud2FpdC5sb2Nr KTsKPiBAQCAtNTIxLDYgKzUyMSw3IEBAIHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfZGNfYXRvbWlj X2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJLyogU3dhcCB0aGUgc3RhdGUsIHRo aXMgaXMgdGhlIHBvaW50IG9mIG5vIHJldHVybi4gKi8KPiAgCWRybV9hdG9taWNfaGVscGVyX3N3 YXBfc3RhdGUoc3RhdGUsIHRydWUpOwo+ICAKPiArCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRl KTsKPiAgCWlmIChhc3luYykKPiAgCQlxdWV1ZV93b3JrKGRjLT53cSwgJmNvbW1pdC0+d29yayk7 Cj4gIAllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggMjM3Mzk2MDk0MjdkLi41ZGQ3MDU0 MDIxOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtNzQsNiArNzQsOCBAQCBFWFBPUlRf U1lNQk9MKGRybV9hdG9taWNfc3RhdGVfZGVmYXVsdF9yZWxlYXNlKTsKPiAgaW50Cj4gIGRybV9h dG9taWNfc3RhdGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIHsKPiArCWtyZWZfaW5pdCgmc3RhdGUtPnJlZik7Cj4gKwo+ICAJ LyogVE9ETyBsZWdhY3kgcGF0aHMgc2hvdWxkIG1heWJlIGRvIGEgYmV0dGVyIGpvYiBhYm91dAo+ ICAJICogc2V0dGluZyB0aGlzIGFwcHJvcHJpYXRlbHk/Cj4gIAkgKi8KPiBAQCAtMjE1LDIyICsy MTcsMTYgQEAgdm9pZCBkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX3N0YXRlX2NsZWFyKTsKPiAg Cj4gIC8qKgo+IC0gKiBkcm1fYXRvbWljX3N0YXRlX2ZyZWUgLSBmcmVlIGFsbCBtZW1vcnkgZm9y IGFuIGF0b21pYyBzdGF0ZQo+IC0gKiBAc3RhdGU6IGF0b21pYyBzdGF0ZSB0byBkZWFsbG9jYXRl Cj4gKyAqIF9fZHJtX2F0b21pY19zdGF0ZV9mcmVlIC0gZnJlZSBhbGwgbWVtb3J5IGZvciBhbiBh dG9taWMgc3RhdGUKPiArICogQHJlZjogVGhpcyBhdG9taWMgc3RhdGUgdG8gZGVhbGxvY2F0ZQo+ ICAgKgo+ICAgKiBUaGlzIGZyZWVzIGFsbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGFuIGF0b21p YyBzdGF0ZSwgaW5jbHVkaW5nIGFsbCB0aGUKPiAgICogcGVyLW9iamVjdCBzdGF0ZSBmb3IgcGxh bmVzLCBjcnRjcyBhbmQgY29ubmVjdG9ycy4KPiAgICovCj4gLXZvaWQgZHJtX2F0b21pY19zdGF0 ZV9mcmVlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArdm9pZCBfX2RybV9hdG9t aWNfc3RhdGVfZnJlZShzdHJ1Y3Qga3JlZiAqcmVmKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2Owo+IC0Jc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnOwo+IC0KPiAtCWlmICgh c3RhdGUpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWRldiA9IHN0YXRlLT5kZXY7Cj4gLQljb25maWcg PSAmZGV2LT5tb2RlX2NvbmZpZzsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9 IGNvbnRhaW5lcl9vZihyZWYsIHR5cGVvZigqc3RhdGUpLCByZWYpOwo+ICsJc3RydWN0IGRybV9t b2RlX2NvbmZpZyAqY29uZmlnID0gJnN0YXRlLT5kZXYtPm1vZGVfY29uZmlnOwo+ICAKPiAgCWRy bV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwo+ICAKPiBAQCAtMjQzLDcgKzIzOSw3IEBAIHZv aWQgZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgCQlrZnJlZShzdGF0ZSk7Cj4gIAl9Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTChkcm1fYXRvbWlj X3N0YXRlX2ZyZWUpOwo+ICtFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19zdGF0ZV9mcmVlKTsK PiAgCj4gIC8qKgo+ICAgKiBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlIC0gZ2V0IGNydGMgc3Rh dGUKPiBAQCAtMTc0Miw3ICsxNzM4LDcgQEAgcmV0cnk6Cj4gIAlpZiAoYXJnLT5mbGFncyAmIERS TV9NT0RFX0FUT01JQ19URVNUX09OTFkpIHsKPiAgCQkvKgo+ICAJCSAqIFVubGlrZSBjb21taXQs IGNoZWNrX29ubHkgZG9lcyBub3QgY2xlYW4gdXAgc3RhdGUuCj4gLQkJICogQmVsb3cgd2UgY2Fs bCBkcm1fYXRvbWljX3N0YXRlX2ZyZWUgZm9yIGl0Lgo+ICsJCSAqIEJlbG93IHdlIGNhbGwgZHJt X2F0b21pY19zdGF0ZV9wdXQgZm9yIGl0Lgo+ICAJCSAqLwo+ICAJCXJldCA9IGRybV9hdG9taWNf Y2hlY2tfb25seShzdGF0ZSk7Cj4gIAl9IGVsc2UgaWYgKGFyZy0+ZmxhZ3MgJiBEUk1fTU9ERV9B VE9NSUNfTk9OQkxPQ0spIHsKPiBAQCAtMTc3NSw4ICsxNzcxLDcgQEAgb3V0Ogo+ICAJCWdvdG8g cmV0cnk7Cj4gIAl9Cj4gIAo+IC0JaWYgKHJldCB8fCBhcmctPmZsYWdzICYgRFJNX01PREVfQVRP TUlDX1RFU1RfT05MWSkKPiAtCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJZHJt X2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICAKPiAgCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3Mo JmN0eCk7Cj4gIAlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMKPiBpbmRleCBjM2Y4MzQ3NmY5OTYuLmRmNmU5YjdjMzc3YyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gQEAgLTEyMDcsNyArMTIwNyw3IEBA IHN0YXRpYyB2b2lkIGNvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKHN0YXRlKTsKPiAg Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBjb21taXRfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCj4gQEAgLTEyODksNiArMTI4OSw3IEBAIGludCBkcm1fYXRvbWljX2hl bHBlcl9jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqIG1ha2Ugc3VyZSB3b3Jr IGl0ZW1zIGRvbid0IGFydGlmaWNhbGx5IHN0YWxsIG9uIGVhY2ggYW5vdGhlci4KPiAgCSAqLwo+ ICAKPiArCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKPiAgCWlmIChub25ibG9jaykKPiAg CQlxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAmc3RhdGUtPmNvbW1pdF93b3JrKTsKPiAg CWVsc2UKPiBAQCAtMTU5MCw3ICsxNTkxLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfaHdfZG9uZSk7Cj4gICAqCj4gICAqIFRoaXMgc2lnbmFscyBjb21wbGV0aW9u IG9mIHRoZSBhdG9taWMgdXBkYXRlIEBzdGF0ZSwgaW5jbHVkaW5nIGFueSBjbGVhbnVwCj4gICAq IHdvcmsuIElmIHVzZWQsIGl0IG11c3QgYmUgY2FsbGVkIHJpZ2h0IGJlZm9yZSBjYWxsaW5nCj4g LSAqIGRybV9hdG9taWNfc3RhdGVfZnJlZSgpLgo+ICsgKiBkcm1fYXRvbWljX3N0YXRlX3B1dCgp Lgo+ICAgKgo+ICAgKiBUaGlzIGlzIHBhcnQgb2YgdGhlIGF0b21pYyBoZWxwZXIgc3VwcG9ydCBm b3Igbm9uYmxvY2tpbmcgY29tbWl0cywgc2VlCj4gICAqIGRybV9hdG9taWNfaGVscGVyX3NldHVw X2NvbW1pdCgpIGZvciBhbiBvdmVydmlldy4KPiBAQCAtMjExMywxOCArMjExNCwxMyBAQCByZXRy eToKPiAgCQlzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUgPSB0cnVlOwo+ICAKPiAgCXJldCA9 IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiAtCWlmIChyZXQgIT0gMCkKPiAtCQlnb3RvIGZh aWw7Cj4gLQo+IC0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNz ZnVsIGNvbW1pdC4gKi8KPiAtCXJldHVybiAwOwo+ICBmYWlsOgo+ICAJaWYgKHJldCA9PSAtRURF QURMSykKPiAgCQlnb3RvIGJhY2tvZmY7Cj4gIAo+IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0 YXRlKTsKPiAtCj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIAlyZXR1cm4gcmV0 Owo+ICsKPiAgYmFja29mZjoKPiAgCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwo+ICAJ ZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0ZSk7Cj4gQEAgLTIxODYsMTggKzIxODIsMTMg QEAgcmV0cnk6Cj4gIAkJZ290byBmYWlsOwo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfY29tbWl0 KHN0YXRlKTsKPiAtCWlmIChyZXQgIT0gMCkKPiAtCQlnb3RvIGZhaWw7Cj4gLQo+IC0JLyogRHJp dmVyIHRha2VzIG93bmVyc2hpcCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KPiAt CXJldHVybiAwOwo+ICBmYWlsOgo+ICAJaWYgKHJldCA9PSAtRURFQURMSykKPiAgCQlnb3RvIGJh Y2tvZmY7Cj4gIAo+IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAtCj4gKwlkcm1f YXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIAlyZXR1cm4gcmV0Owo+ICsKPiAgYmFja29mZjoK PiAgCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwo+ICAJZHJtX2F0b21pY19sZWdhY3lf YmFja29mZihzdGF0ZSk7Cj4gQEAgLTIzMjYsMTggKzIzMTcsMTMgQEAgcmV0cnk6Cj4gIAkJZ290 byBmYWlsOwo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiAtCWlmIChy ZXQgIT0gMCkKPiAtCQlnb3RvIGZhaWw7Cj4gLQo+IC0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hp cCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KPiAtCXJldHVybiAwOwo+ICBmYWls Ogo+ICAJaWYgKHJldCA9PSAtRURFQURMSykKPiAgCQlnb3RvIGJhY2tvZmY7Cj4gIAo+IC0JZHJt X2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAtCj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChz dGF0ZSk7Cj4gIAlyZXR1cm4gcmV0Owo+ICsKPiAgYmFja29mZjoKPiAgCWRybV9hdG9taWNfc3Rh dGVfY2xlYXIoc3RhdGUpOwo+ICAJZHJtX2F0b21pY19sZWdhY3lfYmFja29mZihzdGF0ZSk7Cj4g QEAgLTI0NzksMTEgKzI0NjUsOCBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9hbGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCX0KPiAgCj4gIAllcnIgPSBkcm1fYXRvbWljX2Nv bW1pdChzdGF0ZSk7Cj4gLQo+ICBmcmVlOgo+IC0JaWYgKGVyciA8IDApCj4gLQkJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAtCj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7 Cj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJf ZGlzYWJsZV9hbGwpOwo+IEBAIC0yNTM0LDcgKzI1MTcsNyBAQCByZXRyeToKPiAgCj4gIAllcnIg PSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbChkZXYsICZjdHgpOwo+ICAJaWYgKGVyciA8 IDApIHsKPiAtCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJCWRybV9hdG9taWNf c3RhdGVfcHV0KHN0YXRlKTsKPiAgCQlzdGF0ZSA9IEVSUl9QVFIoZXJyKTsKPiAgCQlnb3RvIHVu bG9jazsKPiAgCX0KPiBAQCAtMjYyMywxOCArMjYwNiwxMyBAQCByZXRyeToKPiAgCQlnb3RvIGZh aWw7Cj4gIAo+ICAJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+IC0JaWYgKHJldCAh PSAwKQo+IC0JCWdvdG8gZmFpbDsKPiAtCj4gLQkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9m IHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLwo+IC0JcmV0dXJuIDA7Cj4gIGZhaWw6Cj4g IAlpZiAocmV0ID09IC1FREVBRExLKQo+ICAJCWdvdG8gYmFja29mZjsKPiAgCj4gLQlkcm1fYXRv bWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+IC0KPiArCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRl KTsKPiAgCXJldHVybiByZXQ7Cj4gKwo+ICBiYWNrb2ZmOgo+ICAJZHJtX2F0b21pY19zdGF0ZV9j bGVhcihzdGF0ZSk7Cj4gIAlkcm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKPiBAQCAt MjY4MywxOCArMjY2MSwxMyBAQCByZXRyeToKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+ICAJcmV0ID0g ZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+IC0JaWYgKHJldCAhPSAwKQo+IC0JCWdvdG8gZmFp bDsKPiAtCj4gLQkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3Nm dWwgY29tbWl0LiAqLwo+IC0JcmV0dXJuIDA7Cj4gIGZhaWw6Cj4gIAlpZiAocmV0ID09IC1FREVB RExLKQo+ICAJCWdvdG8gYmFja29mZjsKPiAgCj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOwo+IC0KPiArCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiAgCXJldHVybiByZXQ7 Cj4gKwo+ICBiYWNrb2ZmOgo+ICAJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gIAlk cm1fYXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKPiBAQCAtMjc0MywxOCArMjcxNiwxMyBA QCByZXRyeToKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+ICAJcmV0ID0gZHJtX2F0b21pY19jb21taXQo c3RhdGUpOwo+IC0JaWYgKHJldCAhPSAwKQo+IC0JCWdvdG8gZmFpbDsKPiAtCj4gLQkvKiBEcml2 ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0LiAqLwo+IC0J cmV0dXJuIDA7Cj4gIGZhaWw6Cj4gIAlpZiAocmV0ID09IC1FREVBRExLKQo+ICAJCWdvdG8gYmFj a29mZjsKPiAgCj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+IC0KPiArCWRybV9h dG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiAgCXJldHVybiByZXQ7Cj4gKwo+ICBiYWNrb2ZmOgo+ ICAJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gIAlkcm1fYXRvbWljX2xlZ2FjeV9i YWNrb2ZmKHN0YXRlKTsKPiBAQCAtMjgyNywxOCArMjc5NSwxMyBAQCByZXRyeToKPiAgCX0KPiAg Cj4gIAlyZXQgPSBkcm1fYXRvbWljX25vbmJsb2NraW5nX2NvbW1pdChzdGF0ZSk7Cj4gLQlpZiAo cmV0ICE9IDApCj4gLQkJZ290byBmYWlsOwo+IC0KPiAtCS8qIERyaXZlciB0YWtlcyBvd25lcnNo aXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICovCj4gLQlyZXR1cm4gMDsKPiAgZmFp bDoKPiAgCWlmIChyZXQgPT0gLUVERUFETEspCj4gIAkJZ290byBiYWNrb2ZmOwo+ICAKPiAtCWRy bV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gLQo+ICsJZHJtX2F0b21pY19zdGF0ZV9wdXQo c3RhdGUpOwo+ICAJcmV0dXJuIHJldDsKPiArCj4gIGJhY2tvZmY6Cj4gIAlkcm1fYXRvbWljX3N0 YXRlX2NsZWFyKHN0YXRlKTsKPiAgCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwo+ IEBAIC0yOTE0LDE5ICsyODc3LDE0IEBAIHJldHJ5Ogo+ICAJY3J0Y19zdGF0ZS0+YWN0aXZlID0g YWN0aXZlOwo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiAtCWlmIChy ZXQgIT0gMCkKPiAtCQlnb3RvIGZhaWw7Cj4gLQo+IC0JLyogRHJpdmVyIHRha2VzIG93bmVyc2hp cCBvZiBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNvbW1pdC4gKi8KPiAtCXJldHVybiAwOwo+ICBmYWls Ogo+ICAJaWYgKHJldCA9PSAtRURFQURMSykKPiAgCQlnb3RvIGJhY2tvZmY7Cj4gIAo+ICAJY29u bmVjdG9yLT5kcG1zID0gb2xkX21vZGU7Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUp Owo+IC0KPiArCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiAgCXJldHVybiByZXQ7Cj4g Kwo+ICBiYWNrb2ZmOgo+ICAJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gIAlkcm1f YXRvbWljX2xlZ2FjeV9iYWNrb2ZmKHN0YXRlKTsKPiBAQCAtMzMzMyw3ICszMjkxLDcgQEAgZHJt X2F0b21pY19oZWxwZXJfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAo+ICBmcmVlOgo+ICAJaWYgKGVyciA8IDApIHsKPiAtCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUo c3RhdGUpOwo+ICsJCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiAgCQlzdGF0ZSA9IEVS Ul9QVFIoZXJyKTsKPiAgCX0KPiAgCj4gQEAgLTM0NDgsMjIgKzM0MDYsMTQgQEAgcmV0cnk6Cj4g IAkJZ290byBmYWlsOwo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiAt CWlmIChyZXQpCj4gLQkJZ290byBmYWlsOwo+IC0KPiAtCS8qIERyaXZlciB0YWtlcyBvd25lcnNo aXAgb2Ygc3RhdGUgb24gc3VjY2Vzc2Z1bCBjb21taXQuICovCj4gLQo+IC0JZHJtX3Byb3BlcnR5 X3VucmVmZXJlbmNlX2Jsb2IoYmxvYik7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gIGZhaWw6Cj4gIAlp ZiAocmV0ID09IC1FREVBRExLKQo+ICAJCWdvdG8gYmFja29mZjsKPiAgCj4gLQlkcm1fYXRvbWlj X3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICAJ ZHJtX3Byb3BlcnR5X3VucmVmZXJlbmNlX2Jsb2IoYmxvYik7Cj4gLQo+ICAJcmV0dXJuIHJldDsK PiArCj4gIGJhY2tvZmY6Cj4gIAlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKPiAgCWRy bV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ IGluZGV4IDAzNDE0YmRlMWYxNS4uMjJkNGYwZTIyMTAxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hl bHBlci5jCj4gQEAgLTM2Nyw5ICszNjcsNyBAQCBmYWlsOgo+ICAJaWYgKHJldCA9PSAtRURFQURM SykKPiAgCQlnb3RvIGJhY2tvZmY7Cj4gIAo+IC0JaWYgKHJldCAhPSAwKQo+IC0JCWRybV9hdG9t aWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gLQo+ICsJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUp Owo+ICAJcmV0dXJuIHJldDsKPiAgCj4gIGJhY2tvZmY6Cj4gQEAgLTEzNjEsMTYgKzEzNTksMTMg QEAgcmV0cnk6Cj4gIAlpbmZvLT52YXIueG9mZnNldCA9IHZhci0+eG9mZnNldDsKPiAgCWluZm8t PnZhci55b2Zmc2V0ID0gdmFyLT55b2Zmc2V0Owo+ICAKPiAtCj4gIGZhaWw6Cj4gIAlkcm1fYXRv bWljX2NsZWFuX29sZF9mYihkZXYsIHBsYW5lX21hc2ssIHJldCk7Cj4gIAo+ICAJaWYgKHJldCA9 PSAtRURFQURMSykKPiAgCQlnb3RvIGJhY2tvZmY7Cj4gIAo+IC0JaWYgKHJldCAhPSAwKQo+IC0J CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gLQo+ICsJZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwo+ICAJcmV0dXJuIHJldDsKPiAgCj4gIGJhY2tvZmY6Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwo+IGluZGV4IGRlZjc4YzhjMTc4MC4uNGEyMWE3NDVj MzczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwo+IEBAIC02 OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19hdG9taWNfY29tbWl0X2NvbXBsZXRlKHN0 cnVjdCBleHlub3NfYXRvbWljX2NvbW1pdCAqY29tbWl0KQo+ICAKPiAgCWRybV9hdG9taWNfaGVs cGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICAKPiAtCWRybV9hdG9taWNfc3RhdGVf ZnJlZShzdGF0ZSk7Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIAo+ICAJc3Bp bl9sb2NrKCZwcml2LT5sb2NrKTsKPiAgCXByaXYtPnBlbmRpbmcgJj0gfmNvbW1pdC0+Y3J0Y3M7 Cj4gQEAgLTI1NCw2ICsyNTQsNyBAQCBpbnQgZXh5bm9zX2F0b21pY19jb21taXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAKPiAgCWRy bV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIHRydWUpOwo+ICAKPiArCWRybV9hdG9t aWNfc3RhdGVfZ2V0KHN0YXRlKTsKPiAgCWlmIChub25ibG9jaykKPiAgCQlzY2hlZHVsZV93b3Jr KCZjb21taXQtPndvcmspOwo+ICAJZWxzZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gaW5kZXggM2ZjZGZmZjI3M2U0Li4wOTI2ZWJiMjM0MTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IEBAIC00MDMxLDEwICs0MDMxLDkgQEAgc3RhdGljIHZvaWQgaHN3 X3RyYW5zX2VkcF9waXBlX0FfY3JjX3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gIG91dDoKPiAtCWRy bV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiAgCVdBUk4ocmV0LCAiVG9nZ2xpbmcgd29ya2Fy b3VuZCB0byAlaSByZXR1cm5zICVpXG4iLCBlbmFibGUsIHJldCk7Cj4gLQlpZiAocmV0KQo+IC0J CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwlkcm1fbW9kZXNldF91bmxvY2tfYWxs KGRldik7Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRp YyBpbnQgaXZiX3BpcGVfY3JjX2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAxZjFmNzkyYzUx OTEuLjIxODIwMDcyZGVhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiBAQCAtMzU4Myw3ICszNTgzLDcgQEAgdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXJldHVybjsKPiAgCj4gIGVycjoKPiAtCWRy bV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0 ZSk7Cj4gIH0KPiAgCj4gIHZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiBAQCAtMzY0Myw2ICszNjQzLDggQEAgdm9pZCBpbnRlbF9maW5p c2hfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWludGVsX2hw ZF9pbml0KGRldl9wcml2KTsKPiAgCX0KPiAgCj4gKwlpZiAoc3RhdGUpCj4gKwkJZHJtX2F0b21p Y19zdGF0ZV9wdXQoc3RhdGUpOwo+ICAJZHJtX21vZGVzZXRfZHJvcF9sb2NrcyhjdHgpOwo+ICAJ ZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKGN0eCk7Cj4gIAltdXRleF91bmxvY2soJmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwo+IEBAIC02ODgzLDcgKzY4ODUsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCWRl dl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjX3N0YXRlLCBzdGF0ZSk7Cj4gIAo+IC0J ZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiArCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0 YXRlKTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDolc10gaHcgc3RhdGUgYWRqdXN0 ZWQsIHdhcyBlbmFibGVkLCBub3cgZGlzYWJsZWRcbiIsCj4gIAkJICAgICAgY3J0Yy0+YmFzZS5p ZCwgY3J0Yy0+bmFtZSk7Cj4gQEAgLTExMjczLDggKzExMjc1LDggQEAgZm91bmQ6Cj4gIAlyZXR1 cm4gdHJ1ZTsKPiAgCj4gIGZhaWw6Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHJlc3RvcmVfc3RhdGUpOwo+ICsJZHJtX2F0b21pY19z dGF0ZV9wdXQoc3RhdGUpOwo+ICsJZHJtX2F0b21pY19zdGF0ZV9wdXQocmVzdG9yZV9zdGF0ZSk7 Cj4gIAlyZXN0b3JlX3N0YXRlID0gc3RhdGUgPSBOVUxMOwo+ICAKPiAgCWlmIChyZXQgPT0gLUVE RUFETEspIHsKPiBAQCAtMTEzMDMsMTAgKzExMzA1LDkgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xv YWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQlyZXR1 cm47Cj4gIAo+ICAJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+IC0JaWYgKHJldCkg ewo+ICsJaWYgKHJldCkKPiAgCQlEUk1fREVCVUdfS01TKCJDb3VsZG4ndCByZWxlYXNlIGxvYWQg ZGV0ZWN0IHBpcGU6ICVpXG4iLCByZXQpOwo+IC0JCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0 ZSk7Cj4gLQl9Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0 YXRpYyBpbnQgaTl4eF9wbGxfcmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTEy MzU1LDggKzEyMzU2LDcgQEAgcmV0cnk6Cj4gIAkJCWdvdG8gcmV0cnk7Cj4gIAkJfQo+ICAKPiAt CQlpZiAocmV0KQo+IC0JCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJCWRybV9h dG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiAgCj4gIAkJaWYgKHJldCA9PSAwICYmIGV2ZW50KSB7 Cj4gIAkJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Cj4gQEAgLTE0NDAzLDcgKzE0 NDAzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xl YW51cF9kb25lKHN0YXRlKTsKPiAgCj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ ICsJZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICAKPiAgCS8qIEFzIG9uZSBvZiB0aGUg cHJpbWFyeSBtbWlvIGFjY2Vzc29ycywgS01TIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZAo+ICAJICog b2YgdHJpZ2dlcmluZyBidWdzIGluIHVuY2xhaW1lZCBhY2Nlc3MuIEFmdGVyIHdlIGZpbmlzaAo+ IEBAIC0xNDQ4Niw2ICsxNDQ4Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJaW50ZWxfc2hhcmVkX2RwbGxfY29tbWl0KHN0YXRl KTsKPiAgCWludGVsX2F0b21pY190cmFja19mYnMoc3RhdGUpOwo+ICAKPiArCWRybV9hdG9taWNf c3RhdGVfZ2V0KHN0YXRlKTsKPiAgCWlmIChub25ibG9jaykKPiAgCQlxdWV1ZV93b3JrKHN5c3Rl bV91bmJvdW5kX3dxLCAmc3RhdGUtPmNvbW1pdF93b3JrKTsKPiAgCWVsc2UKPiBAQCAtMTQ1Mjcs OSArMTQ1MjgsOCBAQCByZXRyeToKPiAgCQlnb3RvIHJldHJ5Owo+ICAJfQo+ICAKPiAtCWlmIChy ZXQpCj4gIG91dDoKPiAtCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJZHJtX2F0 b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0xNjI2NCw4ICsxNjI2 NCw4IEBAIHJldHJ5Ogo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3Mo Y3MpOwo+ICAJfQo+ICAKPiAtCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gIGZhaWw6 Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIAlkcm1fbW9kZXNldF9kcm9wX2xv Y2tzKCZjdHgpOwo+ICAJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ICB9Cj4gQEAg LTE2OTAyLDEwICsxNjkwMiw5IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9yZXN1bWUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiAgCW11 dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gIAo+IC0JaWYgKHJldCkgewo+ ICsJaWYgKHJldCkKPiAgCQlEUk1fRVJST1IoIlJlc3RvcmluZyBvbGQgc3RhdGUgZmFpbGVkIHdp dGggJWlcbiIsIHJldCk7Cj4gLQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAtCX0K PiArCWRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9t b2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKPiBpbmRleCBjN2Q5YTIwZTM3MGQuLjFlYTE5YjZkNzI5NyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTk4OCw5ICs5ODgsNyBAQCBpbnQg aW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+ICAJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKHJl dCkKPiAtCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+IC0KPiArCWRybV9hdG9taWNf c3RhdGVfcHV0KHN0YXRlKTsKPiAgb3V0Ogo+ICAJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4 KTsKPiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RybV9kcnYuYwo+IGluZGV4IGNmODNmNjUwN2VjOC4uZGI2MWFhNWYzMmVmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMKPiBAQCAtODMsNyArODMs NyBAQCBzdGF0aWMgdm9pZCBtdGtfYXRvbWljX2NvbXBsZXRlKHN0cnVjdCBtdGtfZHJtX3ByaXZh dGUgKnByaXZhdGUsCj4gIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRybSwg c3RhdGUpOwo+ICAKPiAgCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRybSwgc3Rh dGUpOwo+IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiArCWRybV9hdG9taWNfc3Rh dGVfcHV0KHN0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgbXRrX2F0b21pY193b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiBAQCAtMTEwLDYgKzExMCw3IEBAIHN0YXRpYyBpbnQg bXRrX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPiAgCj4gIAlkcm1fYXRv bWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCB0cnVlKTsKPiAgCj4gKwlkcm1fYXRvbWljX3N0 YXRlX2dldChzdGF0ZSk7Cj4gIAlpZiAoYXN5bmMpCj4gIAkJbXRrX2F0b21pY19zY2hlZHVsZShw cml2YXRlLCBzdGF0ZSk7Cj4gIAllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiBpbmRl eCA3M2JhZTM4MmVhYzMuLmRiMTkzZjgzNTI5OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21p Yy5jCj4gQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9jb21taXQoc3Ry dWN0IG1zbV9jb21taXQgKmMsIGJvb2wgYXN5bmMpCj4gIAo+ICAJa21zLT5mdW5jcy0+Y29tcGxl dGVfY29tbWl0KGttcywgc3RhdGUpOwo+ICAKPiAtCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0 ZSk7Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4gIAo+ICAJY29tbWl0X2Rlc3Ry b3koYyk7Cj4gIH0KPiBAQCAtMjU2LDYgKzI1Niw3IEBAIGludCBtc21fYXRvbWljX2NvbW1pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogY3VycmVudCBsYXlvdXQuCj4gIAkgKi8KPiAg Cj4gKwlkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7Cj4gIAlpZiAobm9uYmxvY2spIHsKPiAg CQlxdWV1ZV93b3JrKHByaXYtPmF0b21pY193cSwgJmMtPndvcmspOwo+ICAJCXJldHVybiAwOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jIGIvZHJpdmVy cy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuYwo+IGluZGV4IGUxY2ZiYTUxY2ZmNi4uMTczNWM3 YWNjZjcyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jCj4gQEAgLTEwNSw3ICsx MDUsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2F0b21pY19jb21wbGV0ZShzdHJ1Y3Qgb21hcF9hdG9t aWNfc3RhdGVfY29tbWl0ICpjb21taXQpCj4gIAo+ICAJZGlzcGNfcnVudGltZV9wdXQoKTsKPiAg Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUob2xkX3N0YXRlKTsKPiArCWRybV9hdG9taWNfc3Rh dGVfcHV0KG9sZF9zdGF0ZSk7Cj4gIAo+ICAJLyogQ29tcGxldGUgdGhlIGNvbW1pdCwgd2FrZSB1 cCBhbnkgd2FpdGVyLiAqLwo+ICAJc3Bpbl9sb2NrKCZwcml2LT5jb21taXQubG9jayk7Cj4gQEAg LTE3Niw2ICsxNzYsNyBAQCBzdGF0aWMgaW50IG9tYXBfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJLyogU3dhcCB0aGUgc3RhdGUsIHRoaXMgaXMgdGhlIHBvaW50IG9m IG5vIHJldHVybi4gKi8KPiAgCWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIHRy dWUpOwo+ICAKPiArCWRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKPiAgCWlmIChub25ibG9j aykKPiAgCQlzY2hlZHVsZV93b3JrKCZjb21taXQtPndvcmspOwo+ICAJZWxzZQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2ttcy5jIGIvZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvcmNhcl9kdV9rbXMuYwo+IGluZGV4IGJkOWMzYmI5MjUyYy4uYzc2ZWQ5ZWU2 YTAxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfa21zLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2ttcy5jCj4gQEAgLTI2NCw3 ICsyNjQsNyBAQCBzdGF0aWMgdm9pZCByY2FyX2R1X2F0b21pY19jb21wbGV0ZShzdHJ1Y3QgcmNh cl9kdV9jb21taXQgKmNvbW1pdCkKPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3Bs YW5lcyhkZXYsIG9sZF9zdGF0ZSk7Cj4gIAo+IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKG9sZF9z dGF0ZSk7Cj4gKwlkcm1fYXRvbWljX3N0YXRlX3B1dChvbGRfc3RhdGUpOwo+ICAKPiAgCS8qIENv bXBsZXRlIHRoZSBjb21taXQsIHdha2UgdXAgYW55IHdhaXRlci4gKi8KPiAgCXNwaW5fbG9jaygm cmNkdS0+Y29tbWl0LndhaXQubG9jayk7Cj4gQEAgLTMzMCw2ICszMzAsNyBAQCBzdGF0aWMgaW50 IHJjYXJfZHVfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJLyogU3dh cCB0aGUgc3RhdGUsIHRoaXMgaXMgdGhlIHBvaW50IG9mIG5vIHJldHVybi4gKi8KPiAgCWRybV9h dG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIHRydWUpOwo+ICAKPiArCWRybV9hdG9taWNf c3RhdGVfZ2V0KHN0YXRlKTsKPiAgCWlmIChub25ibG9jaykKPiAgCQlzY2hlZHVsZV93b3JrKCZj b21taXQtPndvcmspOwo+ICAJZWxzZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3Rp L3N0aV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9zdGkvc3RpX2Rydi5jCj4gaW5kZXggMjc4NDkx OWE3MzY2Li43MDg3NDk5OTY5YmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N0aS9z dGlfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3RpL3N0aV9kcnYuYwo+IEBAIC0xODQs NyArMTg0LDcgQEAgc3RhdGljIHZvaWQgc3RpX2F0b21pY19jb21wbGV0ZShzdHJ1Y3Qgc3RpX3By aXZhdGUgKnByaXZhdGUsCj4gIAlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRy bSwgc3RhdGUpOwo+ICAKPiAgCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRybSwg c3RhdGUpOwo+IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiArCWRybV9hdG9taWNf c3RhdGVfcHV0KHN0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc3RpX2F0b21pY193b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiBAQCAtMjE3LDYgKzIxNyw3IEBAIHN0YXRpYyBp bnQgc3RpX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPiAgCj4gIAlkcm1f YXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCB0cnVlKTsKPiAgCj4gKwlkcm1fYXRvbWlj X3N0YXRlX2dldChzdGF0ZSk7Cj4gIAlpZiAobm9uYmxvY2spCj4gIAkJc3RpX2F0b21pY19zY2hl ZHVsZShwcml2YXRlLCBzdGF0ZSk7Cj4gIAllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9kcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwo+IGluZGV4IDhh YjQ3YjUwMmQ4My4uYTk2MzBjMmQ2Y2IzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9kcm0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwo+IEBAIC02Myw3 ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHRlZ3JhX2F0b21pY19jb21wbGV0ZShzdHJ1Y3QgdGVncmFf ZHJtICp0ZWdyYSwKPiAgCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZHJtLCBz dGF0ZSk7Cj4gIAo+ICAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZHJtLCBzdGF0 ZSk7Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJZHJtX2F0b21pY19zdGF0 ZV9wdXQoc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCB0ZWdyYV9hdG9taWNfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gQEAgLTk2LDYgKzk2LDcgQEAgc3RhdGljIGludCB0 ZWdyYV9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4gIAo+ICAJZHJtX2F0 b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgdHJ1ZSk7Cj4gIAo+ICsJZHJtX2F0b21pY19z dGF0ZV9nZXQoc3RhdGUpOwo+ICAJaWYgKG5vbmJsb2NrKQo+ICAJCXRlZ3JhX2F0b21pY19zY2hl ZHVsZSh0ZWdyYSwgc3RhdGUpOwo+ICAJZWxzZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdGlsY2RjL3RpbGNkY19kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX2Ry di5jCj4gaW5kZXggYTY5NDk3N2MzMmY0Li4xNDdmYjI4Mjg3YWUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3RpbGNkYy90aWxjZGNfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v dGlsY2RjL3RpbGNkY19kcnYuYwo+IEBAIC0xNDMsOCArMTQzLDYgQEAgc3RhdGljIGludCB0aWxj ZGNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJZHJtX2F0b21pY19oZWxw ZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4gIAo+IC0JZHJtX2F0b21pY19zdGF0ZV9m cmVlKHN0YXRlKTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMu Ywo+IGluZGV4IGMxZjY1YzZjOGU2MC4uZjMxZjcyYWY4NTUxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf a21zLmMKPiBAQCAtNjEsNyArNjEsNyBAQCB2YzRfYXRvbWljX2NvbXBsZXRlX2NvbW1pdChzdHJ1 Y3QgdmM0X2NvbW1pdCAqYykKPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5l cyhkZXYsIHN0YXRlKTsKPiAgCj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICsJ ZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICAKPiAgCXVwKCZ2YzQtPmFzeW5jX21vZGVz ZXQpOwo+ICAKPiBAQCAtMTczLDYgKzE3Myw3IEBAIHN0YXRpYyBpbnQgdmM0X2F0b21pY19jb21t aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCSAqIGN1cnJlbnQgbGF5b3V0Lgo+ICAJICov Cj4gIAo+ICsJZHJtX2F0b21pY19zdGF0ZV9nZXQoc3RhdGUpOwo+ICAJaWYgKG5vbmJsb2NrKSB7 Cj4gIAkJdmM0X3F1ZXVlX3NlcW5vX2NiKGRldiwgJmMtPmNiLCB3YWl0X3NlcW5vLAo+ICAJCQkJ ICAgdmM0X2F0b21pY19jb21wbGV0ZV9jb21taXRfc2Vxbm9fY2IpOwo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fYXRvbWljLmggYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiBpbmRl eCA5NzAxZjJkZmI3ODQuLjAxZTExMTZmMDA4NCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiBAQCAtMTUzLDYg KzE1Myw3IEBAIHN0cnVjdCBfX2RybV9jb25ubmVjdG9yc19zdGF0ZSB7Cj4gIAo+ICAvKioKPiAg ICogc3RydWN0IGRybV9hdG9taWNfc3RhdGUgLSB0aGUgZ2xvYmFsIHN0YXRlIG9iamVjdCBmb3Ig YXRvbWljIHVwZGF0ZXMKPiArICogQHJlZjogY291bnQgb2YgYWxsIHJlZmVyZW5jZXMgdG8gdGhp cyBzdGF0ZSAod2lsbCBub3QgYmUgZnJlZWQgdW50aWwgemVybykKPiAgICogQGRldjogcGFyZW50 IERSTSBkZXZpY2UKPiAgICogQGFsbG93X21vZGVzZXQ6IGFsbG93IGZ1bGwgbW9kZXNldAo+ICAg KiBAbGVnYWN5X2N1cnNvcl91cGRhdGU6IGhpbnQgdG8gZW5mb3JjZSBsZWdhY3kgY3Vyc29yIElP Q1RMIHNlbWFudGljcwo+IEBAIC0xNjQsNiArMTY1LDggQEAgc3RydWN0IF9fZHJtX2Nvbm5uZWN0 b3JzX3N0YXRlIHsKPiAgICogQGFjcXVpcmVfY3R4OiBhY3F1aXJlIGNvbnRleHQgZm9yIHRoaXMg YXRvbWljIG1vZGVzZXQgc3RhdGUgdXBkYXRlCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSB7Cj4gKwlzdHJ1Y3Qga3JlZiByZWY7Cj4gKwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRl djsKPiAgCWJvb2wgYWxsb3dfbW9kZXNldCA6IDE7Cj4gIAlib29sIGxlZ2FjeV9jdXJzb3JfdXBk YXRlIDogMTsKPiBAQCAtMTkzLDcgKzE5NiwzMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2Ny dGNfY29tbWl0X2dldChzdHJ1Y3QgZHJtX2NydGNfY29tbWl0ICpjb21taXQpCj4gIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICogX19tdXN0X2NoZWNrCj4gIGRybV9hdG9taWNfc3RhdGVfYWxsb2Mo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgZHJtX2F0b21pY19zdGF0ZV9jbGVhcihz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+IC12b2lkIGRybV9hdG9taWNfc3RhdGVf ZnJlZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICsKPiArLyoqCj4gKyAqIGRy bV9hdG9taWNfc3RhdGVfZ2V0IC0gYWNxdWlyZSBhIHJlZmVyZW5jZSB0byB0aGUgYXRvbWljIHN0 YXRlCj4gKyAqIEBzdGF0ZTogVGhlIGF0b21pYyBzdGF0ZQo+ICsgKgo+ICsgKiBSZXR1cm5zIGEg bmV3IHJlZmVyZW5jZSB0byB0aGUgQHN0YXRlCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICoKPiArZHJtX2F0b21pY19zdGF0ZV9nZXQoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlrcmVmX2dldCgmc3RhdGUtPnJlZik7Cj4gKwly ZXR1cm4gc3RhdGU7Cj4gK30KPiArCj4gK3ZvaWQgX19kcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Ry dWN0IGtyZWYgKnJlZik7Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19zdGF0ZV9wdXQgLSBy ZWxlYXNlIGEgcmVmZXJlbmNlIHRvIHRoZSBhdG9taWMgc3RhdGUKPiArICogQHN0YXRlOiBUaGUg YXRvbWljIHN0YXRlCj4gKyAqCj4gKyAqIFRoaXMgcmVsZWFzZXMgYSByZWZlcmVuY2UgdG8gQHN0 YXRlIHdoaWNoIGlzIGZyZWVkIGFmdGVyIHJlbW92aW5nIHRoZQo+ICsgKiBmaW5hbCByZWZlcmVu Y2UuIE5vIGxvY2tpbmcgcmVxdWlyZWQgYW5kIGNhbGxhYmxlIGZyb20gYW55IGNvbnRleHQuCj4g KyAqLwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlrcmVmX3B1dCgmc3RhdGUtPnJlZiwgX19k cm1fYXRvbWljX3N0YXRlX2ZyZWUpOwo+ICt9Cj4gIAo+ICBpbnQgIF9fbXVzdF9jaGVjawo+ICBk cm1fYXRvbWljX3N0YXRlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5l LmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+IGluZGV4IDQzY2YxOTNlNTRkNi4uMDIzNTM5 MDRjZGJhIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX3BsYW5lLmgKPiBAQCAtODgsNyArODgsNiBAQCBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlIHsKPiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiAgfTsKPiAgCj4g LQo+ICAvKioKPiAgICogc3RydWN0IGRybV9wbGFuZV9mdW5jcyAtIGRyaXZlciBwbGFuZSBjb250 cm9sIGZ1bmN0aW9ucwo+ICAgKi8KPiAtLSAKPiAyLjkuMwo+IAoKLS0gCkRhbmllbCBWZXR0ZXIK U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNo Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=