From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 07/12] drm/i915: Rename request->ringbuf to request->ring Date: Tue, 24 Nov 2015 15:51:57 +0100 Message-ID: <20151124145157.GN17050@phenom.ffwll.local> References: <1448023432-10726-1-git-send-email-chris@chris-wilson.co.uk> <1448023432-10726-7-git-send-email-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-wm0-f52.google.com (mail-wm0-f52.google.com [74.125.82.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF8736E946 for ; Tue, 24 Nov 2015 06:52:02 -0800 (PST) Received: by wmvv187 with SMTP id v187so213236740wmv.1 for ; Tue, 24 Nov 2015 06:52:01 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448023432-10726-7-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMjAsIDIwMTUgYXQgMTI6NDM6NDdQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IE5vdyB0aGF0IHdlIGhhdmUgZGlzYW1idWlnYXRlZCByaW5nIGFuZCBlbmdpbmUsIHdl IGNhbiB1c2UgdGhlIGNsZWFyZXIKPiBhbmQgbW9yZSBjb25zaXN0ZW50IG5hbWUgZm9yIHRoZSBp bnRlbF9yaW5nYnVmZmVyIHBvaW50ZXIgaW4gdGhlCj4gcmVxdWVzdC4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KClJldmlld2VkLWJ5 OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8ICAyOCArKystLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgIHwgICAyICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwgIDEwICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8IDE0OSArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAg MzIgKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgICAgICAg fCAgNDIgKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j ICAgIHwgIDg2ICsrKysrKysrLS0tLS0tLS0tCj4gIDEwIGZpbGVzIGNoYW5nZWQsIDE3OCBpbnNl cnRpb25zKCspLCAxODMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggOWNlOGIzZmNiM2EwLi5iN2VhYTJkZWI0MzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBAQCAtMjE4NSw3ICsyMTg1LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 IHsKPiAgCSAqIGNvbnRleHQuCj4gIAkgKi8KPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHg7 Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nOwo+ICAKPiAgCS8qKiBCYXRjaCBidWZmZXIgcmVsYXRlZCB0byB0aGlz IHJlcXVlc3QgaWYgYW55ICh1c2VkIGZvcgo+ICAJICAgIGVycm9yIHN0YXRlIGR1bXAgb25seSkg Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA1YTFiNTFhMjdmZTMuLmQ2NzA2ZGQ0 MTE3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMzg2LDcgKzEzODYsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkgKiBOb3RlIHRoaXMgcmVxdWlyZXMgdGhhdCB3ZSBhcmUg YWx3YXlzIGNhbGxlZCBpbiByZXF1ZXN0Cj4gIAkgKiBjb21wbGV0aW9uIG9yZGVyLgo+ICAJICov Cj4gLQlyZXF1ZXN0LT5yaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVhZCA9IHJlcXVlc3QtPnBvc3Rm aXg7Cj4gKwlyZXF1ZXN0LT5yaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IHJlcXVlc3QtPnBvc3Rm aXg7Cj4gIAo+ICAJbGlzdF9kZWxfaW5pdCgmcmVxdWVzdC0+bGlzdCk7Cj4gIAlpOTE1X2dlbV9y ZXF1ZXN0X3JlbW92ZV9mcm9tX2NsaWVudChyZXF1ZXN0KTsKPiBAQCAtMjU1Myw3ICsyNTUzLDcg QEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0LAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXY7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nOwo+ICAJdTMyIHJl cXVlc3Rfc3RhcnQ7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMjU2MiwxNiArMjU2MiwxNiBAQCB2 b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVl c3QsCj4gIAo+ICAJZW5naW5lID0gcmVxdWVzdC0+ZW5naW5lOwo+ICAJZGV2X3ByaXYgPSByZXF1 ZXN0LT5pOTE1Owo+IC0JcmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Cj4gKwlyaW5nID0gcmVx dWVzdC0+cmluZzsKPiAgCj4gIAkvKgo+ICAJICogVG8gZW5zdXJlIHRoYXQgdGhpcyBjYWxsIHdp bGwgbm90IGZhaWwsIHNwYWNlIGZvciBpdHMgZW1pc3Npb25zCj4gIAkgKiBzaG91bGQgYWxyZWFk eSBoYXZlIGJlZW4gcmVzZXJ2ZWQgaW4gdGhlIHJpbmcgYnVmZmVyLiBMZXQgdGhlIHJpbmcKPiAg CSAqIGtub3cgdGhhdCBpdCBpcyB0aW1lIHRvIHVzZSB0aGF0IHNwYWNlIHVwLgo+ICAJICovCj4g LQlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX3VzZShyaW5nYnVmKTsKPiArCWludGVsX3Jpbmdf cmVzZXJ2ZWRfc3BhY2VfdXNlKHJpbmcpOwo+ICAKPiAtCXJlcXVlc3Rfc3RhcnQgPSBpbnRlbF9y aW5nX2dldF90YWlsKHJpbmdidWYpOwo+ICsJcmVxdWVzdF9zdGFydCA9IGludGVsX3JpbmdfZ2V0 X3RhaWwocmluZyk7Cj4gIAkvKgo+ICAJICogRW1pdCBhbnkgb3V0c3RhbmRpbmcgZmx1c2hlcyAt IGV4ZWNidWYgY2FuIGZhaWwgdG8gZW1pdCB0aGUgZmx1c2gKPiAgCSAqIGFmdGVyIGhhdmluZyBl bWl0dGVkIHRoZSBiYXRjaGJ1ZmZlciBjb21tYW5kLiBIZW5jZSB3ZSBuZWVkIHRvIGZpeAo+IEBA IC0yNTkzLDE0ICsyNTkzLDE0IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgCSAqIEdQVSBwcm9jZXNzaW5nIHRoZSByZXF1 ZXN0LCB3ZSBuZXZlciBvdmVyLWVzdGltYXRlIHRoZQo+ICAJICogcG9zaXRpb24gb2YgdGhlIGhl YWQuCj4gIAkgKi8KPiAtCXJlcXVlc3QtPnBvc3RmaXggPSBpbnRlbF9yaW5nX2dldF90YWlsKHJp bmdidWYpOwo+ICsJcmVxdWVzdC0+cG9zdGZpeCA9IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZyk7 Cj4gIAo+ICAJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAgCQlyZXQgPSBlbmdpbmUtPmVt aXRfcmVxdWVzdChyZXF1ZXN0KTsKPiAgCWVsc2Ugewo+ICAJCXJldCA9IGVuZ2luZS0+YWRkX3Jl cXVlc3QocmVxdWVzdCk7Cj4gIAo+IC0JCXJlcXVlc3QtPnRhaWwgPSBpbnRlbF9yaW5nX2dldF90 YWlsKHJpbmdidWYpOwo+ICsJCXJlcXVlc3QtPnRhaWwgPSBpbnRlbF9yaW5nX2dldF90YWlsKHJp bmcpOwo+ICAJfQo+ICAJLyogTm90IGFsbG93ZWQgdG8gZmFpbCEgKi8KPiAgCVdBUk4ocmV0LCAi ZW1pdHxhZGRfcmVxdWVzdCBmYWlsZWQ6ICVkIVxuIiwgcmV0KTsKPiBAQCAtMjYyOSw3ICsyNjI5 LDcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0LAo+ICAJaW50ZWxfbWFya19idXN5KGRldl9wcml2LT5kZXYpOwo+ICAKPiAgCS8q IFNhbml0eSBjaGVjayB0aGF0IHRoZSByZXNlcnZlZCBzaXplIHdhcyBsYXJnZSBlbm91Z2guICov Cj4gLQlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChyaW5nYnVmKTsKPiArCWludGVsX3Jp bmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHJpbmcpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCBpOTE1 X2NvbnRleHRfaXNfYmFubmVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBA QCAtMjc0MSw3ICsyNzQxLDcgQEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJICogdG8gYmUgcmVkb25lIGlmIHRoZSByZXF1ZXN0 IGlzIG5vdCBhY3R1YWxseSBzdWJtaXR0ZWQgc3RyYWlnaHQKPiAgCSAqIGF3YXksIGUuZy4gYmVj YXVzZSBhIEdQVSBzY2hlZHVsZXIgaGFzIGRlZmVycmVkIGl0Lgo+ICAJICovCj4gLQlpbnRlbF9y aW5nX3Jlc2VydmVkX3NwYWNlX3Jlc2VydmUocmVxLT5yaW5nYnVmLAo+ICsJaW50ZWxfcmluZ19y ZXNlcnZlZF9zcGFjZV9yZXNlcnZlKHJlcS0+cmluZywKPiAgCQkJCQkgIE1JTl9TUEFDRV9GT1Jf QUREX1JFUVVFU1QpOwo+ICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDApOwo+ICAJaWYg KHJldCkgewo+IEBAIC0yNzY0LDcgKzI3NjQsNyBAQCBlcnI6Cj4gIAo+ICB2b2lkIGk5MTVfZ2Vt X3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4g LQlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNlbChyZXEtPnJpbmdidWYpOwo+ICsJaW50 ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmVxLT5yaW5nKTsKPiAgCj4gIAlpOTE1X2dl bV9yZXF1ZXN0X3VucmVmZXJlbmNlKHJlcSk7Cj4gIH0KPiBAQCAtNDY1NywxMSArNDY1NywxMSBA QCBpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBzbGljZSkKPiAgCSAqIGF0IGluaXRpYWxpemF0aW9uIHRpbWUuCj4gIAkgKi8KPiAgCWZv ciAoaSA9IDA7IGkgPCBHRU43X0wzTE9HX1NJWkU7IGkgKz0gNCkgewo+IC0JCWludGVsX3Jpbmdf ZW1pdChyZXEtPnJpbmdidWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPiAtCQlpbnRlbF9y aW5nX2VtaXQocmVxLT5yaW5nYnVmLCByZWdfYmFzZSArIGkpOwo+IC0JCWludGVsX3JpbmdfZW1p dChyZXEtPnJpbmdidWYsIHJlbWFwX2luZm9baS80XSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJl cS0+cmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+ICsJCWludGVsX3JpbmdfZW1pdChy ZXEtPnJpbmcsIHJlZ19iYXNlICsgaSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZywg cmVtYXBfaW5mb1tpLzRdKTsKPiAgCX0KPiAtCWludGVsX3JpbmdfYWR2YW5jZShyZXEtPnJpbmdi dWYpOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7Cj4gIAo+ICAJcmV0dXJuIHJl dDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCAw NDdjMmY5NGJkMjIuLjVkMDUxNjkzMGIxNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKPiBAQCAtNDc5LDcgKzQ3OSw3IEBAIGk5MTVfZ2VtX2NvbnRleHRfZ2V0 KHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiwgdTMyIGlkKQo+ICBzdGF0 aWMgaW5saW5lIGludAo+ICBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0g cmVxLT5yaW5nOwo+ICAJdTMyIGZsYWdzID0gaHdfZmxhZ3MgfCBNSV9NTV9TUEFDRV9HVFQ7Cj4g IAljb25zdCBpbnQgbnVtX3JpbmdzID0KPiAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9hIG9uIGl2 YisgaWYgc2lnbmFsbGluZyBmcm9tIG90aGVyIHJpbmdzICovCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDMyYzJkMDhiZGQ0Yy4uYWZhOTMwZGFi NjMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ IEBAIC0xMTE1LDcgKzExMTUsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3JldGlyZV9jb21tYW5k cyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zKQo+ICBzdGF0aWMgaW50Cj4g IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdi dWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCWlu dCByZXQsIGk7Cj4gIAo+ICAJaWYgKCFJU19HRU43KHJlcS0+aTkxNSkgfHwgcmVxLT5lbmdpbmUt PmlkICE9IFJDUykgewo+IEBAIC0xMTk2LDcgKzExOTYsNyBAQCBpOTE1X2dlbV9yaW5nYnVmZmVy X3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgCQkJ ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3MsCj4gIAkJCSAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZyA9IHBhcmFtcy0+cmVxdWVzdC0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nID0gcGFyYW1zLT5yZXF1ZXN0LT5yaW5nOwo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gcGFyYW1zLT5yZXF1ZXN0LT5pOTE1Owo+ICAJdTY0IGV4ZWNf c3RhcnQsIGV4ZWNfbGVuOwo+ICAJaW50IGluc3RwX21vZGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiBpbmRleCBjMjIyNDU2OTYxZmIuLmIxZWU2Zjg5ZTcwYiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTY1MSw3ICs2NTEsNyBAQCBzdGF0aWMg aW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJ CQkgIHVuc2lnbmVkIGVudHJ5LAo+ICAJCQkgIGRtYV9hZGRyX3QgYWRkcikKPiAgewo+IC0Jc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCWludCByZXQ7Cj4gIAo+ICAJQlVH X09OKGVudHJ5ID49IDQpOwo+IEBAIC0xNTg4LDcgKzE1ODgsNyBAQCBzdGF0aWMgdWludDMyX3Qg Z2V0X3BkX29mZnNldChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHN0YXRpYyBpbnQg aHN3X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIAkJCSBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZyA9IHJlcS0+cmluZzsKPiAgCWludCByZXQ7Cj4gIAo+ICAJLyogTkI6IFRMQnMgbXVzdCBiZSBm bHVzaGVkIGFuZCBpbnZhbGlkYXRlZCBiZWZvcmUgYSBzd2l0Y2ggKi8KPiBAQCAtMTYyNiw3ICsx NjI2LDcgQEAgc3RhdGljIGludCB2Z3B1X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCj4gIHN0YXRpYyBpbnQgZ2VuN19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0LAo+ICAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJaW50IHJldDsKPiAgCj4g IAkvKiBOQjogVExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJlZm9yZSBhIHN3 aXRjaCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAyNDQ3ZjFh MzZmYjAuLmNkZDYwNzQyNTdhZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBAQCAtMTA4MjQsNyArMTA4MjQsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjJfcXVldWVf ZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAo+ICAJCQkJIHVpbnQzMl90IGZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJdTMyIGZsaXBfbWFzazsKPiAgCWludCByZXQ7 Cj4gQEAgLTEwODU5LDcgKzEwODU5LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW4zX3F1ZXVlX2Zs aXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKPiAgCQkJCSB1aW50MzJfdCBmbGFncykKPiAgewo+IC0Jc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXUzMiBmbGlwX21hc2s7Cj4gIAlpbnQgcmV0Owo+ IEBAIC0xMDg5MSw3ICsxMDg5MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gIAkJCQkgdWludDMyX3QgZmxhZ3MpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSByZXEtPmk5MTU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gIAl1aW50MzJfdCBwZiwgcGlwZXNyYzsKPiBAQCAtMTA5MzAsNyAr MTA5MzAsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjZfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJ CQkJIHVpbnQzMl90IGZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVx LT5yaW5nOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1 Owo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMp Owo+ICAJdWludDMyX3QgcGYsIHBpcGVzcmM7Cj4gQEAgLTEwOTY2LDcgKzEwOTY2LDcgQEAgc3Rh dGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJCSB1aW50MzJfdCBm bGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdi dWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXVp bnQzMl90IHBsYW5lX2JpdCA9IDA7Cj4gIAlpbnQgbGVuLCByZXQ7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCAxNTAyZTUzZDJhZDYuLjVjMzc5MjJjM2NkZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgaW50IGV4ZWNs aXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICB7 Cj4gIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBycS0+Y3R4LT5wcGd0dDsKPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gcnEtPmN0eC0+ZW5naW5lW3JxLT5l bmdpbmUtPmlkXS5zdGF0ZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpyYl9vYmog PSBycS0+cmluZ2J1Zi0+b2JqOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnJiX29i aiA9IHJxLT5yaW5nLT5vYmo7Cj4gIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiAgCXVpbnQzMl90ICpy ZWdfc3RhdGU7Cj4gIAo+IEBAIC01NDUsNyArNTQ1LDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNf Y29udGV4dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAo+ ICAJaTkxNV9nZW1fcmVxdWVzdF9yZWZlcmVuY2UocmVxdWVzdCk7Cj4gIAo+IC0JcmVxdWVzdC0+ dGFpbCA9IHJlcXVlc3QtPnJpbmdidWYtPnRhaWw7Cj4gKwlyZXF1ZXN0LT50YWlsID0gcmVxdWVz dC0+cmluZy0+dGFpbDsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPmV4ZWNsaXN0X2xv Y2spOwo+ICAKPiBAQCAtNjMzLDcgKzYzMyw3IEBAIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfYWxs b2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Cj4g IHsKPiAgCWludCByZXQ7Cj4gIAo+IC0JcmVxdWVzdC0+cmluZ2J1ZiA9IHJlcXVlc3QtPmN0eC0+ ZW5naW5lW3JlcXVlc3QtPmVuZ2luZS0+aWRdLnJpbmdidWY7Cj4gKwlyZXF1ZXN0LT5yaW5nID0g cmVxdWVzdC0+Y3R4LT5lbmdpbmVbcmVxdWVzdC0+ZW5naW5lLT5pZF0ucmluZ2J1ZjsKPiAgCj4g IAlpZiAocmVxdWVzdC0+Y3R4ICE9IHJlcXVlc3QtPmVuZ2luZS0+ZGVmYXVsdF9jb250ZXh0KSB7 Cj4gIAkJcmV0ID0gaW50ZWxfbHJfY29udGV4dF9waW4ocmVxdWVzdCk7Cj4gQEAgLTY1Niw3ICs2 NTYsNyBAQCBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdAo+ICBzdGF0aWMgdm9pZAo+ICBpbnRlbF9s b2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCkKPiAgewo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJlcXVlc3QtPnJpbmdidWYp Owo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJlcXVlc3QtPnJpbmcpOwo+ICAKPiAgCWlmIChpbnRl bF9yaW5nX3N0b3BwZWQocmVxdWVzdC0+ZW5naW5lKSkKPiAgCQlyZXR1cm47Cj4gQEAgLTY4Niw5 ICs2ODYsOSBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhl Y2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgCQkJICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnZt YXMpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICAgICAgICpkZXYgPSBwYXJhbXMtPmRldjsK PiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgICpyaW5nID0gcGFyYW1zLT5yaW5nOwo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAgKmVuZ2luZSA9IHBhcmFtcy0+cmluZzsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHBhcmFtcy0+Y3R4LT5lbmdpbmVbcmluZy0+aWRd LnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHBhcmFtcy0+cmVx dWVzdC0+cmluZzsKPiAgCXU2NCBleGVjX3N0YXJ0Owo+ICAJaW50IGluc3RwX21vZGU7Cj4gIAl1 MzIgaW5zdHBfbWFzazsKPiBAQCAtNzAwLDcgKzcwMCw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNf c3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJY2Fz ZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9HRU5FUkFMOgo+ICAJY2FzZSBJOTE1X0VYRUNfQ09O U1RBTlRTX0FCU09MVVRFOgo+ICAJY2FzZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNF Ogo+IC0JCWlmIChpbnN0cF9tb2RlICE9IDAgJiYgcmluZyAhPSAmZGV2X3ByaXYtPnJpbmdbUkNT XSkgewo+ICsJCWlmIChpbnN0cF9tb2RlICE9IDAgJiYgZW5naW5lLT5pZCAhPSBSQ1MpIHsKPiAg CQkJRFJNX0RFQlVHKCJub24tMCByZWwgY29uc3RhbnRzIG1vZGUgb24gbm9uLVJDU1xuIik7Cj4g IAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiBAQCAtNzI5LDE3ICs3MjksMTcgQEAgaW50IGlu dGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpw YXJhbXMsCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKHJpbmcgPT0g JmRldl9wcml2LT5yaW5nW1JDU10gJiYKPiArCWlmIChlbmdpbmUtPmlkID09IFJDUyAmJgo+ICAJ ICAgIGluc3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Cj4g IAkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihwYXJhbXMtPnJlcXVlc3QsIDQpOwo+ICAJCWlmIChy ZXQpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBN SV9OT09QKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9J TU0oMSkpOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBJTlNUUE0pOwo+IC0JCWludGVs X3JpbmdfZW1pdChyaW5nYnVmLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7Cj4gLQkJ aW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSkpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBJTlNUUE0pOwo+ICsJCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7Cj4gKwkJaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOwo+ICAKPiAgCQlkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21v ZGUgPSBpbnN0cF9tb2RlOwo+ICAJfQo+IEBAIC03NDcsNyArNzQ3LDcgQEAgaW50IGludGVsX2V4 ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMs Cj4gIAlleGVjX3N0YXJ0ID0gcGFyYW1zLT5iYXRjaF9vYmpfdm1fb2Zmc2V0ICsKPiAgCQkgICAg IGFyZ3MtPmJhdGNoX3N0YXJ0X29mZnNldDsKPiAgCj4gLQlyZXQgPSByaW5nLT5lbWl0X2JiX3N0 YXJ0KHBhcmFtcy0+cmVxdWVzdCwgZXhlY19zdGFydCwgcGFyYW1zLT5kaXNwYXRjaF9mbGFncyk7 Cj4gKwlyZXQgPSBlbmdpbmUtPmVtaXRfYmJfc3RhcnQocGFyYW1zLT5yZXF1ZXN0LCBleGVjX3N0 YXJ0LCBwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gQEAgLTgyNyw3ICs4MjcsNyBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRf cGluKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCj4gIHsKPiAgCWludCBlbmdpbmUg PSBycS0+ZW5naW5lLT5pZDsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2Jq ID0gcnEtPmN0eC0+ZW5naW5lW2VuZ2luZV0uc3RhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiA9IHJxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmcgPSBycS0+cmluZzsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAgCVdBUk5fT04oIW11dGV4 X2lzX2xvY2tlZCgmcnEtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KSk7Cj4gQEAgLTgzNyw3ICs4 MzcsNyBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcnEpCj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byByZXNldF9waW5fY291bnQ7 Cj4gIAo+IC0JCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHJxLT5pOTE1 LT5kZXYsIHJpbmdidWYpOwo+ICsJCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJf b2JqKHJxLT5pOTE1LT5kZXYsIHJpbmcpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gdW5waW5f Y3R4X29iajsKPiAgCj4gQEAgLTg1OCwxMiArODU4LDEyIEBAIHZvaWQgaW50ZWxfbHJfY29udGV4 dF91bnBpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQo+ICB7Cj4gIAlpbnQgZW5n aW5lID0gcnEtPmVuZ2luZS0+aWQ7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4 X29iaiA9IHJxLT5jdHgtPmVuZ2luZVtlbmdpbmVdLnN0YXRlOwo+IC0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSBycS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nID0gcnEtPnJpbmc7Cj4gIAo+ICAJaWYgKGN0eF9vYmopIHsKPiAgCQlXQVJOX09O KCFtdXRleF9pc19sb2NrZWQoJnJxLT5pOTE1LT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+ICAJCWlm ICgtLXJxLT5jdHgtPmVuZ2luZVtlbmdpbmVdLnBpbl9jb3VudCA9PSAwKSB7Cj4gLQkJCWludGVs X3VucGluX3JpbmdidWZmZXJfb2JqKHJpbmdidWYpOwo+ICsJCQlpbnRlbF91bnBpbl9yaW5nYnVm ZmVyX29iaihyaW5nKTsKPiAgCQkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oY3R4X29iaik7 Cj4gIAkJfQo+ICAJfQo+IEBAIC04NzMsNyArODczLDcgQEAgc3RhdGljIGludCBpbnRlbF9sb2dp Y2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKPiAgewo+ICAJaW50IHJldCwgaTsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IHJlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBy ZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu ZzsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKPiAg CXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJmRldl9wcml2LT53b3JrYXJvdW5kczsKPiAg Cj4gQEAgLTg4OSwxNCArODg5LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX3dv cmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAlpZiAo cmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1J X0xPQURfUkVHSVNURVJfSU1NKHctPmNvdW50KSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTE9BRF9SRUdJU1RFUl9JTU0ody0+Y291bnQpKTsKPiAgCWZvciAoaSA9IDA7IGkgPCB3LT5j b3VudDsgaSsrKSB7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHctPnJlZ1tpXS5hZGRy KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwgdy0+cmVnW2ldLnZhbHVlKTsKPiArCQlp bnRlbF9yaW5nX2VtaXQocmluZywgdy0+cmVnW2ldLmFkZHIpOwo+ICsJCWludGVsX3JpbmdfZW1p dChyaW5nLCB3LT5yZWdbaV0udmFsdWUpOwo+ICAJfQo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdi dWYsIE1JX05PT1ApOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICAKPiAt CWludGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5n KTsKPiAgCj4gIAllbmdpbmUtPmdwdV9jYWNoZXNfZGlydHkgPSB0cnVlOwo+ICAJcmV0ID0gbG9n aWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMocmVxKTsKPiBAQCAtMTMxOCw3ICsxMzE4LDcgQEAg c3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBy ZXEtPmN0eC0+cHBndHQ7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEt PmVuZ2luZTsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5n YnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gIAlj b25zdCBpbnQgbnVtX2xyaV9jbWRzID0gR0VOOF9MRUdBQ1lfUERQRVMgKiAyOwo+ICAJaW50IGks IHJldDsKPiAgCj4gQEAgLTEzMjYsMTggKzEzMjYsMTggQEAgc3RhdGljIGludCBpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdF9wZHBzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJ aWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVm LCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpKTsKPiArCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShudW1fbHJpX2NtZHMpKTsKPiAgCWZvciAoaSA9 IEdFTjhfTEVHQUNZX1BEUEVTIC0gMTsgaSA+PSAwOyBpLS0pIHsKPiAgCQljb25zdCBkbWFfYWRk cl90IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihwcGd0dCwgaSk7Cj4gIAo+IC0J CWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkpKTsK PiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgdXBwZXJfMzJfYml0cyhwZF9kYWRkcikpOwo+ IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkp KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgbG93ZXJfMzJfYml0cyhwZF9kYWRkcikp Owo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkp KTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJfYml0cyhwZF9kYWRkcikpOwo+ ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsK PiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93ZXJfMzJfYml0cyhwZF9kYWRkcikpOwo+ICAJ fQo+ICAKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKPiAtCWludGVsX3Jp bmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK PiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBA IC0xMzQ1LDcgKzEzNDUsNyBAQCBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3Bk cHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHN0YXRpYyBpbnQgZ2VuOF9l bWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkgICAg ICB1NjQgb2Zmc2V0LCB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKPiAgewo+IC0Jc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCWJvb2wgcHBndHQgPSAhKGRpc3BhdGNo X2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTEz NzEsMTQgKzEzNzEsMTQgQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAkvKiBGSVhN RShCRFcpOiBBZGRyZXNzIHNwYWNlIGFuZCBzZWN1cml0eSBzZWxlY3RvcnMuICovCj4gLQlpbnRl bF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfQkFUQ0hfQlVGRkVSX1NUQVJUX0dFTjggfAo+ICsJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0JBVENIX0JVRkZFUl9TVEFSVF9HRU44IHwKPiAgCQkJKHBw Z3R0PDw4KSB8Cj4gIAkJCShkaXNwYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfUlMgPwo+ICAJ CQkgTUlfQkFUQ0hfUkVTT1VSQ0VfU1RSRUFNRVIgOiAwKSk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQo cmluZ2J1ZiwgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5n YnVmLCB1cHBlcl8zMl9iaXRzKG9mZnNldCkpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYs IE1JX05PT1ApOwo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICsJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQo cmluZywgdXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+IEBAIC0xNDIwLDEwICsxNDIwLDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2go c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAJCQkgICB1MzIgaW52YWxp ZGF0ZV9kb21haW5zLAo+ICAJCQkgICB1MzIgdW51c2VkKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Cj4gLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nID0gcmluZ2J1Zi0+cmluZzsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSByaW5nLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1 ZXN0LT5yaW5nOwo+ICAJdWludDMyX3QgY21kOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTE0NDIs MTcgKzE0MzksMTcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAKPiAgCWlmIChpbnZhbGlkYXRlX2RvbWFpbnMgJiBJ OTE1X0dFTV9HUFVfRE9NQUlOUykgewo+ICAJCWNtZCB8PSBNSV9JTlZBTElEQVRFX1RMQjsKPiAt CQlpZiAocmluZyA9PSAmZGV2X3ByaXYtPnJpbmdbVkNTXSkKPiArCQlpZiAocmVxdWVzdC0+ZW5n aW5lLT5pZCA9PSBWQ1MpCj4gIAkJCWNtZCB8PSBNSV9JTlZBTElEQVRFX0JTRDsKPiAgCX0KPiAg Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgY21kKTsKPiAtCWludGVsX3JpbmdfZW1pdChy aW5nYnVmLAo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7Cj4gKwlpbnRlbF9yaW5nX2Vt aXQocmluZywKPiAgCQkJSTkxNV9HRU1fSFdTX1NDUkFUQ0hfQUREUiB8Cj4gIAkJCU1JX0ZMVVNI X0RXX1VTRV9HVFQpOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOyAvKiB1cHBlciBh ZGRyICovCj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7IC8qIHZhbHVlICovCj4gLQlp bnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 IC8qIHVwcGVyIGFkZHIgKi8KPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsgLyogdmFsdWUg Ki8KPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ IEBAIC0xNDYxLDkgKzE0NTgsOCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAJCQkJICB1MzIgaW52YWxp ZGF0ZV9kb21haW5zLAo+ICAJCQkJICB1MzIgZmx1c2hfZG9tYWlucykKPiAgewo+IC0Jc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXF1ZXN0LT5yaW5nYnVmOwo+IC0Jc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7Cj4gLQl1MzIgc2NyYXRjaF9h ZGRyID0gcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiAr CXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxdWVzdC0+cmluZzsKPiArCXUzMiBz Y3JhdGNoX2FkZHIgPSByZXF1ZXN0LT5lbmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldCArIDIgKiBD QUNIRUxJTkVfQllURVM7Cj4gIAlib29sIHZmX2ZsdXNoX3dhOwo+ICAJdTMyIGZsYWdzID0gMDsK PiAgCWludCByZXQ7Cj4gQEAgLTE0OTEsNyArMTQ4Nyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0 X2ZsdXNoX3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4gIAkg KiBPbiBHRU45KyBCZWZvcmUgVkZfQ0FDSEVfSU5WQUxJREFURSB3ZSBuZWVkIHRvIGVtaXQgYSBO VUxMIHBpcGUKPiAgCSAqIGNvbnRyb2wuCj4gIAkgKi8KPiAtCXZmX2ZsdXNoX3dhID0gSU5URUxf SU5GTyhyaW5nLT5kZXYpLT5nZW4gPj0gOSAmJgo+ICsJdmZfZmx1c2hfd2EgPSBJTlRFTF9JTkZP KHJlcXVlc3QtPmk5MTUpLT5nZW4gPj0gOSAmJgo+ICAJCSAgICAgIGZsYWdzICYgUElQRV9DT05U Uk9MX1ZGX0NBQ0hFX0lOVkFMSURBVEU7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihy ZXF1ZXN0LCB2Zl9mbHVzaF93YSA/IDEyIDogNik7Cj4gQEAgLTE0OTksMjEgKzE0OTUsMjEgQEAg c3RhdGljIGludCBnZW44X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWlmICh2Zl9mbHVzaF93YSkg ewo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsK PiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJp bmdidWYsIDApOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiAtCQlpbnRlbF9y aW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKPiArCQlp bnRlbF9yaW5nX2VtaXQocmluZywgMCk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+ ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywg MCk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+ICAJfQo+ICAKPiAtCWludGVsX3Jp bmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKPiAtCWludGVsX3Jpbmdf ZW1pdChyaW5nYnVmLCBmbGFncyk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwgc2NyYXRj aF9hZGRyKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiAtCWludGVsX3Jpbmdf ZW1pdChyaW5nYnVmLCAwKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiAtCWlu dGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhf T1BfUElQRV9DT05UUk9MKDYpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBmbGFncyk7Cj4g KwlpbnRlbF9yaW5nX2VtaXQocmluZywgc2NyYXRjaF9hZGRyKTsKPiArCWludGVsX3JpbmdfZW1p dChyaW5nLCAwKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKPiArCWludGVsX3Jpbmdf ZW1pdChyaW5nLCAwKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gIAlyZXR1 cm4gMDsKPiAgfQo+IEBAIC0xNTMwLDggKzE1MjYsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3NldF9z ZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIgc2Vxbm8pCj4gIAo+ICBzdGF0 aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCkKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXF1ZXN0 LT5yaW5nYnVmOwo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJp bmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Cj4g IAl1MzIgY21kOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTE1NDcsMjMgKzE1NDIsMjMgQEAgc3Rh dGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QpCj4gIAljbWQgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONDsKPiAgCWNtZCB8PSBNSV9H TE9CQUxfR1RUOwo+ICAKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBjbWQpOwo+IC0JaW50 ZWxfcmluZ19lbWl0KHJpbmdidWYsCj4gLQkJCShyaW5nLT5zdGF0dXNfcGFnZS5nZnhfYWRkciAr Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5n LAo+ICsJCQkocmVxdWVzdC0+ZW5naW5lLT5zdGF0dXNfcGFnZS5nZnhfYWRkciArCj4gIAkJCSAo STkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKSkpOwo+IC0J aW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYs IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcXVlc3QpKTsKPiAtCWludGVsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9VU0VSX0lOVEVSUlVQVCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1 ZiwgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Cj4gKwlpbnRlbF9yaW5n X2VtaXQocmluZywgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxdWVzdCkpOwo+ICsJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJfSU5URVJSVVBUKTsKPiArCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKPiAgCWludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJt aXQocmVxdWVzdCk7Cj4gIAo+ICAJLyoKPiAgCSAqIEhlcmUgd2UgYWRkIHR3byBleHRyYSBOT09Q cyBhcyBwYWRkaW5nIHRvIGF2b2lkCj4gIAkgKiBsaXRlIHJlc3RvcmUgb2YgYSBjb250ZXh0IHdp dGggSEVBRD09VEFJTC4KPiAgCSAqLwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05P T1ApOwo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+IC0JaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmdidWYpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu Ywo+IGluZGV4IGQ3OWM5YzBiYmZmYi4uM2ExYmQ1ZjdhZjU1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX21vY3MuYwo+IEBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIGludCBlbWl0X21vY3Nf Y29udHJvbF90YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJCSAg IGNvbnN0IHN0cnVjdCBkcm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSwKPiAgCQkJCSAgIHUzMiBy ZWdfYmFzZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEt PnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsK PiAgCXVuc2lnbmVkIGludCBpbmRleDsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0xODUsMTEgKzE4 NSwxMSBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAt CWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9N T0NTX0VOVFJJRVMpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVS X0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPiAgCj4gIAlmb3IgKGluZGV4ID0gMDsgaW5k ZXggPCB0YWJsZS0+c2l6ZTsgaW5kZXgrKykgewo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVm LCByZWdfYmFzZSArIGluZGV4ICogNCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHRh YmxlLT50YWJsZVtpbmRleF0uY29udHJvbF92YWx1ZSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJp bmcsIHJlZ19iYXNlICsgaW5kZXggKiA0KTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdGFi bGUtPnRhYmxlW2luZGV4XS5jb250cm9sX3ZhbHVlKTsKPiAgCX0KPiAgCj4gIAkvKgo+IEBAIC0y MDEsMTIgKzIwMSwxMiBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJICogdGhhdCB2YWx1ZSB0byBhbGwgdGhl IHVzZWQgZW50cmllcy4KPiAgCSAqLwo+ICAJZm9yICg7IGluZGV4IDwgR0VOOV9OVU1fTU9DU19F TlRSSUVTOyBpbmRleCsrKSB7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHJlZ19iYXNl ICsgaW5kZXggKiA0KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxl WzBdLmNvbnRyb2xfdmFsdWUpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCByZWdfYmFzZSAr IGluZGV4ICogNCk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHRhYmxlLT50YWJsZVswXS5j b250cm9sX3ZhbHVlKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlf Tk9PUCk7Cj4gLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2Vt aXQocmluZywgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiBAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9tb2Nz X2NvbnRyb2xfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIHN0YXRp YyBpbnQgZW1pdF9tb2NzX2wzY2NfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCj4gIAkJCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAqdGFibGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+ICsJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gIAl1bnNpZ25lZCBp bnQgY291bnQ7Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAgCXUzMiB2YWx1ZTsKPiBAQCAtMjQwLDE1 ICsyNDAsMTUgQEAgc3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4g LQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLAo+ICAJ CQlNSV9MT0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMgLyAyKSk7Cj4gIAo+ ICAJZm9yIChpID0gMCwgY291bnQgPSAwOyBpIDwgdGFibGUtPnNpemUgLyAyOyBpKyssIGNvdW50 ICs9IDIpIHsKPiAgCQl2YWx1ZSA9ICh0YWJsZS0+dGFibGVbY291bnRdLmwzY2NfdmFsdWUgJiAw eGZmZmYpIHwKPiAgCQkJKCh0YWJsZS0+dGFibGVbY291bnQgKyAxXS5sM2NjX3ZhbHVlICYgMHhm ZmZmKSA8PCAxNik7Cj4gIAo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU45X0xOQ0ZD TU9DUzAgKyBpICogNCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIHZhbHVlKTsKPiAr CQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0VOOV9MTkNGQ01PQ1MwICsgaSAqIDQpOwo+ICsJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCB2YWx1ZSk7Cj4gIAl9Cj4gIAo+ICAJaWYgKHRhYmxlLT5zaXpl ICYgMHgwMSkgewo+IEBAIC0yNjQsMTQgKzI2NCwxNCBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19s M2NjX3RhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJICogdGhleSBh cmUgcmVzZXJ2ZWQgYnkgdGhlIGhhcmR3YXJlLgo+ICAJICovCj4gIAlmb3IgKDsgaSA8IEdFTjlf TlVNX01PQ1NfRU5UUklFUyAvIDI7IGkrKykgewo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVm LCBHRU45X0xOQ0ZDTU9DUzAgKyBpICogNCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYs IHZhbHVlKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0VOOV9MTkNGQ01PQ1MwICsgaSAq IDQpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCB2YWx1ZSk7Cj4gIAo+ICAJCXZhbHVlID0g ZmlsbGVyOwo+ICAJfQo+ICAKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsK PiAtCWludGVsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9OT09QKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gIAlyZXR1cm4g MDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA1ZTljN2Mx NWE4NGIuLjQ1MWM1OWI4ZjUyNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMKPiBAQCAtMjUyLDExICsyNTIsMTEgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0 cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ICAKPiAgCW92ZXJsYXktPmFjdGl2ZSA9IHRy dWU7Cj4gIAo+IC0JaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZ2J1ZiwgTUlfT1ZFUkxBWV9GTElQ IHwgTUlfT1ZFUkxBWV9PTik7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nYnVmLCBvdmVy bGF5LT5mbGlwX2FkZHIgfCBPRkNfVVBEQVRFKTsKPiAtCWludGVsX3JpbmdfZW1pdChyZXEtPnJp bmdidWYsIE1JX1dBSVRfRk9SX0VWRU5UIHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKPiAt CWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIE1JX05PT1ApOwo+IC0JaW50ZWxfcmluZ19h ZHZhbmNlKHJlcS0+cmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nLCBNSV9P VkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX09OKTsKPiArCWludGVsX3JpbmdfZW1pdChyZXEtPnJp bmcsIG92ZXJsYXktPmZsaXBfYWRkciB8IE9GQ19VUERBVEUpOwo+ICsJaW50ZWxfcmluZ19lbWl0 KHJlcS0+cmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVAp Owo+ICsJaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZywgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5n X2FkdmFuY2UocmVxLT5yaW5nKTsKPiAgCj4gIAlyZXR1cm4gaW50ZWxfb3ZlcmxheV9kb193YWl0 X3JlcXVlc3Qob3ZlcmxheSwgcmVxLCBOVUxMKTsKPiAgfQo+IEBAIC0yOTMsOSArMjkzLDkgQEAg c3RhdGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpv dmVybGF5LAo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfcmluZ19lbWl0KHJl cS0+cmluZ2J1ZiwgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9DT05USU5VRSk7Cj4gLQlp bnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nYnVmLCBmbGlwX2FkZHIpOwo+IC0JaW50ZWxfcmluZ19h ZHZhbmNlKHJlcS0+cmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nLCBNSV9P VkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKPiArCWludGVsX3JpbmdfZW1pdChy ZXEtPnJpbmcsIGZsaXBfYWRkcik7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocmVxLT5yaW5nKTsK PiAgCj4gIAlXQVJOX09OKG92ZXJsYXktPmxhc3RfZmxpcF9yZXEpOwo+ICAJaTkxNV9nZW1fcmVx dWVzdF9hc3NpZ24oJm92ZXJsYXktPmxhc3RfZmxpcF9yZXEsIHJlcSk7Cj4gQEAgLTM2MCwyMiAr MzYwLDIyIEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292ZXJs YXkgKm92ZXJsYXkpCj4gIAl9Cj4gIAo+ICAJLyogd2FpdCBmb3Igb3ZlcmxheSB0byBnbyBpZGxl ICovCj4gLQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nYnVmLCBNSV9PVkVSTEFZX0ZMSVAgfCBN SV9PVkVSTEFZX0NPTlRJTlVFKTsKPiAtCWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIGZs aXBfYWRkcik7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nYnVmLCBNSV9XQUlUX0ZPUl9F VkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmVx LT5yaW5nLCBNSV9PVkVSTEFZX0ZMSVAgfCBNSV9PVkVSTEFZX0NPTlRJTlVFKTsKPiArCWludGVs X3JpbmdfZW1pdChyZXEtPnJpbmcsIGZsaXBfYWRkcik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmVx LT5yaW5nLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Cj4g IAkvKiB0dXJuIG92ZXJsYXkgb2ZmICovCj4gIAlpZiAoSVNfSTgzMChkZXYpKSB7Cj4gIAkJLyog V29ya2Fyb3VuZDogRG9uJ3QgZGlzYWJsZSB0aGUgb3ZlcmxheSBmdWxseSwgc2luY2Ugb3RoZXJ3 aXNlCj4gIAkJICogaXQgZGllcyBvbiB0aGUgbmV4dCBPVkVSTEFZX09OIGNtZC4gKi8KPiAtCQlp bnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nYnVmLCBNSV9OT09QKTsKPiAtCQlpbnRlbF9yaW5nX2Vt aXQocmVxLT5yaW5nYnVmLCBNSV9OT09QKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5n YnVmLCBNSV9OT09QKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nLCBNSV9OT09QKTsK PiArCQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nLCBNSV9OT09QKTsKPiArCQlpbnRlbF9yaW5n X2VtaXQocmVxLT5yaW5nLCBNSV9OT09QKTsKPiAgCX0gZWxzZSB7Cj4gLQkJaW50ZWxfcmluZ19l bWl0KHJlcS0+cmluZ2J1ZiwgTUlfT1ZFUkxBWV9GTElQIHwgTUlfT1ZFUkxBWV9PRkYpOwo+IC0J CWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmdidWYsIGZsaXBfYWRkcik7Cj4gLQkJaW50ZWxfcmlu Z19lbWl0KHJlcS0+cmluZ2J1ZiwgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVS TEFZX0ZMSVApOwo+ICsJCWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmcsIE1JX09WRVJMQVlfRkxJ UCB8IE1JX09WRVJMQVlfT0ZGKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmVxLT5yaW5nLCBmbGlw X2FkZHIpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmcsIE1JX1dBSVRfRk9SX0VWRU5U IHwgTUlfV0FJVF9GT1JfT1ZFUkxBWV9GTElQKTsKPiAgCX0KPiAtCWludGVsX3JpbmdfYWR2YW5j ZShyZXEtPnJpbmdidWYpOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZyk7Cj4gIAo+ ICAJcmV0dXJuIGludGVsX292ZXJsYXlfZG9fd2FpdF9yZXF1ZXN0KG92ZXJsYXksIHJlcSwgaW50 ZWxfb3ZlcmxheV9vZmZfdGFpbCk7Cj4gIH0KPiBAQCAtNDMzLDkgKzQzMyw5IEBAIHN0YXRpYyBp bnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVsX292ZXJsYXkgKm92 ZXJsYXkpCj4gIAkJCXJldHVybiByZXQ7Cj4gIAkJfQo+ICAKPiAtCQlpbnRlbF9yaW5nX2VtaXQo cmVxLT5yaW5nYnVmLCBNSV9XQUlUX0ZPUl9FVkVOVCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJ UCk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJlcS0+cmluZ2J1ZiwgTUlfTk9PUCk7Cj4gLQkJaW50 ZWxfcmluZ19hZHZhbmNlKHJlcS0+cmluZ2J1Zik7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJlcS0+ cmluZywgTUlfV0FJVF9GT1JfRVZFTlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwo+ICsJ CWludGVsX3JpbmdfZW1pdChyZXEtPnJpbmcsIE1JX05PT1ApOwo+ICsJCWludGVsX3JpbmdfYWR2 YW5jZShyZXEtPnJpbmcpOwo+ICAKPiAgCQlyZXQgPSBpbnRlbF9vdmVybGF5X2RvX3dhaXRfcmVx dWVzdChvdmVybGF5LCByZXEsCj4gIAkJCQkJCSAgICBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xk X3ZpZF90YWlsKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5k ZXggY2MwNjA1ODhhMjg3Li5jNDYxMGM3MjdjNDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTk1LDcgKzk1LDcgQEAgZ2VuMl9yZW5kZXJfcmluZ19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkgICAgICAgdTMyCWlu dmFsaWRhdGVfZG9tYWlucywKPiAgCQkgICAgICAgdTMyCWZsdXNoX2RvbWFpbnMpCj4gIHsKPiAt CXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gIAl1MzIgY21kOwo+ICAJaW50 IHJldDsKPiAgCj4gQEAgLTEyMiw3ICsxMjIsNyBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCSAgICAgICB1MzIJaW52YWxpZGF0 ZV9kb21haW5zLAo+ICAJCSAgICAgICB1MzIJZmx1c2hfZG9tYWlucykKPiAgewo+IC0Jc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCXUzMiBjbWQ7Cj4gIAlpbnQgcmV0Owo+ ICAKPiBAQCAtMjE1LDcgKzIxNSw3IEBAIGdlbjRfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIHN0YXRpYyBpbnQKPiAgaW50ZWxfZW1pdF9wb3N0 X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAg ewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCXUzMiBzY3JhdGNo X2FkZHIgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9C WVRFUzsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGludAo+ ICBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAo+ICAJCSAgICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1MzIgZmx1c2hfZG9tYWlucykK PiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4g KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCXUzMiBmbGFn cyA9IDA7Cj4gIAl1MzIgc2NyYXRjaF9hZGRyID0gcmVxLT5lbmdpbmUtPnNjcmF0Y2guZ3R0X29m ZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gIAlpbnQgcmV0Owo+IEBAIC0zMDMsNyArMzAz LDcgQEAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPiAgc3RhdGljIGludAo+ICBnZW43X3JlbmRlcl9yaW5nX2NzX3N0YWxsX3dhKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nID0gcmVxLT5yaW5nOwo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNCk7Cj4gQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgaW50Cj4gIGdlbjdfcmVu ZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJICAg ICAgIHUzMiBpbnZhbGlkYXRlX2RvbWFpbnMsIHUzMiBmbHVzaF9kb21haW5zKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJdTMyIGZsYWdzID0gMDsKPiAg CXUzMiBzY3JhdGNoX2FkZHIgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAq IENBQ0hFTElORV9CWVRFUzsKPiAgCWludCByZXQ7Cj4gQEAgLTM4Nyw3ICszODcsNyBAQCBzdGF0 aWMgaW50Cj4gIGdlbjhfZW1pdF9waXBlX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCj4gIAkJICAgICAgIHUzMiBmbGFncywgdTMyIHNjcmF0Y2hfYWRkcikKPiAgewo+ IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCWludCByZXQ7Cj4gIAo+ ICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDYpOwo+IEBAIC03MTIsNyArNzEyLDcgQEAg ZXJyOgo+ICAKPiAgc3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmcgPSByZXEtPnJpbmc7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBy ZXEtPmk5MTU7Cj4gIAlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5kcyAqdyA9ICZkZXZfcHJpdi0+d29y a2Fyb3VuZHM7Cj4gIAlpbnQgcmV0LCBpOwo+IEBAIC0xMTg0LDcgKzExODQsNyBAQCBzdGF0aWMg aW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxl cl9yZXEsCj4gIAkJCSAgIHVuc2lnbmVkIGludCBudW1fZHdvcmRzKQo+ICB7Cj4gICNkZWZpbmUg TUJPWF9VUERBVEVfRFdPUkRTIDgKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpzaWduYWxs ZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmc7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzaWduYWxsZXJfcmVxLT5pOTE1Owo+ICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqd2FpdGVyOwo+ICAJaW50IGksIHJldCwgbnVtX3JpbmdzOwo+IEBAIC0xMjI0LDcg KzEyMjQsNyBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gIAkJCSAgIHVuc2lnbmVkIGludCBudW1fZHdvcmRz KQo+ICB7Cj4gICNkZWZpbmUgTUJPWF9VUERBVEVfRFdPUkRTIDYKPiAtCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmc7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzaWduYWxsZXJfcmVxLT5pOTE1Owo+ ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwo+ICAJaW50IGksIHJldCwgbnVtX3Jp bmdzOwo+IEBAIC0xMjYxLDcgKzEyNjEsNyBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gIHN0YXRpYyBpbnQg Z2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAo+ ICAJCSAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKPiAgewo+IC0Jc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmdidWY7Cj4gKwlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+cmluZzsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7 Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp1c2VsZXNzOwo+ICAJaW50IGksIHJldCwgbnVt X3JpbmdzOwo+IEBAIC0xMzAzLDcgKzEzMDMsNyBAQCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgc3RhdGljIGludAo+ ICBnZW42X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7 Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJaW50IHJldDsKPiAg Cj4gIAlpZiAocmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwpCj4gQEAgLTEzNDIsNyArMTM0 Miw3IEBAIGdlbjhfcmluZ19zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqd2FpdGVy X3JlcSwKPiAgCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gIAkg ICAgICAgdTMyIHNlcW5vKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqd2FpdGVy ID0gd2FpdGVyX3JlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICp3YWl0 ZXIgPSB3YWl0ZXJfcmVxLT5yaW5nOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gd2FpdGVyX3JlcS0+aTkxNTsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0xMzcwLDcgKzEz NzAsNyBAQCBnZW42X3Jpbmdfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKndhaXRl cl9yZXEsCj4gIAkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyLAo+ICAJ ICAgICAgIHUzMiBzZXFubykKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKndhaXRl ciA9IHdhaXRlcl9yZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqd2Fp dGVyID0gd2FpdGVyX3JlcS0+cmluZzsKPiAgCXUzMiBkdzEgPSBNSV9TRU1BUEhPUkVfTUJPWCB8 Cj4gIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFSRSB8Cj4gIAkJICBNSV9TRU1BUEhPUkVfUkVHSVNU RVI7Cj4gQEAgLTE0MTgsNyArMTQxOCw3IEBAIGRvIHsJCQkJCQkJCQlcCj4gIHN0YXRpYyBpbnQK PiAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsK PiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJdTMyIHNj cmF0Y2hfYWRkciA9IHJlcS0+ZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVM SU5FX0JZVEVTOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTE2MTIsNyArMTYxMiw3IEBAIGJzZF9y aW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJICAgICAgIHUz MiAgICAgaW52YWxpZGF0ZV9kb21haW5zLAo+ICAJICAgICAgIHUzMiAgICAgZmx1c2hfZG9tYWlu cykKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCWludCBy ZXQ7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwo+IEBAIC0xNjI4LDcg KzE2MjgsNyBAQCBic2RfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKPiAgc3RhdGljIGludAo+ICBpOXh4X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJl cS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5n Owo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCk7Cj4g QEAgLTE3NzMsNyArMTc3Myw3IEBAIGk5NjVfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJIHU2NCBvZmZzZXQsIHUzMiBsZW5ndGgsCj4g IAkJCSB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZyA9IHJlcS0+cmluZzsKPiAgCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIDIpOwo+IEBAIC0xODAwLDcgKzE4MDAsNyBAQCBpODMwX2Rpc3BhdGNoX2V4ZWNi dWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAkJCSB1NjQgb2Zmc2V0 LCB1MzIgbGVuLAo+ICAJCQkgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gIAl1MzIgY3Nfb2Zmc2V0ID0gcmVxLT5l bmdpbmUtPnNjcmF0Y2guZ3R0X29mZnNldDsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0xODYzLDcg KzE4NjMsNyBAQCBpOTE1X2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCj4gIAkJCSB1NjQgb2Zmc2V0LCB1MzIgbGVuLAo+ICAJCQkgdW5zaWduZWQg ZGlzcGF0Y2hfZmxhZ3MpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0g cmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJp bmc7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsK PiBAQCAtMjE2NCw3ICsyMTY0LDcgQEAgaW50IGludGVsX3JpbmdfaWRsZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQo+ICAKPiAgaW50IGludGVsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRy YXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICB7Cj4gLQlyZXF1ZXN0 LT5yaW5nYnVmID0gcmVxdWVzdC0+ZW5naW5lLT5idWZmZXI7Cj4gKwlyZXF1ZXN0LT5yaW5nID0g cmVxdWVzdC0+ZW5naW5lLT5idWZmZXI7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMjIx NywxNyArMjIxNywxNyBAQCB2b2lkIGludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfZW5kKHN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICAKPiAgc3RhdGljIGludCB3YWl0X2Zvcl9z cGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnRhcmdldDsKPiAgCXVuc2lnbmVkIHNwYWNlOwo+ICAJaW50IHJldDsKPiAgCj4g LQlpZiAoaW50ZWxfcmluZ19zcGFjZShyaW5nYnVmKSA+PSBieXRlcykKPiArCWlmIChpbnRlbF9y aW5nX3NwYWNlKHJpbmcpID49IGJ5dGVzKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qIFRoZSB3 aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCj4gLQlXQVJO X09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gKwlXQVJOX09OKHJpbmctPnJlc2VydmVk X2luX3VzZSk7Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0YXJnZXQsICZlbmdpbmUtPnJl cXVlc3RfbGlzdCwgbGlzdCkgewo+ICAJCS8qCj4gQEAgLTIyMzUsMTIgKzIyMzUsMTIgQEAgc3Rh dGljIGludCB3YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwg aW50IGJ5dGVzKQo+ICAJCSAqIGZyb20gbXVsdGlwbGUgcmluZ2J1ZmZlcnMuIEhlcmUsIHdlIG11 c3QgaWdub3JlIGFueSB0aGF0Cj4gIAkJICogYXJlbid0IGZyb20gdGhlIHJpbmdidWZmZXIgd2Un cmUgY29uc2lkZXJpbmcuCj4gIAkJICovCj4gLQkJaWYgKHRhcmdldC0+cmluZ2J1ZiAhPSByaW5n YnVmKQo+ICsJCWlmICh0YXJnZXQtPnJpbmcgIT0gcmluZykKPiAgCQkJY29udGludWU7Cj4gIAo+ ICAJCS8qIFdvdWxkIGNvbXBsZXRpb24gb2YgdGhpcyByZXF1ZXN0IGZyZWUgZW5vdWdoIHNwYWNl PyAqLwo+IC0JCXNwYWNlID0gX19pbnRlbF9yaW5nX3NwYWNlKHRhcmdldC0+cG9zdGZpeCwgcmlu Z2J1Zi0+dGFpbCwKPiAtCQkJCQkgICByaW5nYnVmLT5zaXplKTsKPiArCQlzcGFjZSA9IF9faW50 ZWxfcmluZ19zcGFjZSh0YXJnZXQtPnBvc3RmaXgsIHJpbmctPnRhaWwsCj4gKwkJCQkJICAgcmlu Zy0+c2l6ZSk7Cj4gIAkJaWYgKHNwYWNlID49IGJ5dGVzKQo+ICAJCQlicmVhazsKPiAgCX0KPiBA QCAtMjI1Miw3ICsyMjUyLDcgQEAgc3RhdGljIGludCB3YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1 cm4gcmV0Owo+ICAKPiAtCXJpbmdidWYtPnNwYWNlID0gc3BhY2U7Cj4gKwlyaW5nLT5zcGFjZSA9 IHNwYWNlOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTIyNjcsMTYgKzIyNjcsMTYgQEAg c3RhdGljIHZvaWQgcmluZ193cmFwKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ ICAKPiAgc3RhdGljIGludCByaW5nX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsIGludCBieXRlcykKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdi dWYgPSByZXEtPnJpbmdidWY7Cj4gLQlpbnQgcmVtYWluX3VzYWJsZSA9IHJpbmdidWYtPmVmZmVj dGl2ZV9zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPiAtCWludCByZW1haW5fYWN0dWFsID0gcmluZ2J1 Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZyA9IHJlcS0+cmluZzsKPiArCWludCByZW1haW5fdXNhYmxlID0gcmluZy0+ZWZmZWN0aXZlX3Np emUgLSByaW5nLT50YWlsOwo+ICsJaW50IHJlbWFpbl9hY3R1YWwgPSByaW5nLT5zaXplIC0gcmlu Zy0+dGFpbDsKPiAgCWludCByZXQsIHRvdGFsX2J5dGVzLCB3YWl0X2J5dGVzID0gMDsKPiAgCWJv b2wgbmVlZF93cmFwID0gZmFsc2U7Cj4gIAo+IC0JaWYgKHJpbmdidWYtPnJlc2VydmVkX2luX3Vz ZSkKPiArCWlmIChyaW5nLT5yZXNlcnZlZF9pbl91c2UpCj4gIAkJdG90YWxfYnl0ZXMgPSBieXRl czsKPiAgCWVsc2UKPiAtCQl0b3RhbF9ieXRlcyA9IGJ5dGVzICsgcmluZ2J1Zi0+cmVzZXJ2ZWRf c2l6ZTsKPiArCQl0b3RhbF9ieXRlcyA9IGJ5dGVzICsgcmluZy0+cmVzZXJ2ZWRfc2l6ZTsKPiAg Cj4gIAlpZiAodW5saWtlbHkoYnl0ZXMgPiByZW1haW5fdXNhYmxlKSkgewo+ICAJCS8qCj4gQEAg LTIyOTIsOSArMjI5Miw5IEBAIHN0YXRpYyBpbnQgcmluZ19wcmVwYXJlKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCj4gIAkJCSAqIGZhbGxzIG9mZiB0aGUgZW5k LiBTbyBvbmx5IG5lZWQgdG8gdG8gd2FpdCBmb3IgdGhlCj4gIAkJCSAqIHJlc2VydmVkIHNpemUg YWZ0ZXIgZmx1c2hpbmcgb3V0IHRoZSByZW1haW5kZXIuCj4gIAkJCSAqLwo+IC0JCQl3YWl0X2J5 dGVzID0gcmVtYWluX2FjdHVhbCArIHJpbmdidWYtPnJlc2VydmVkX3NpemU7Cj4gKwkJCXdhaXRf Ynl0ZXMgPSByZW1haW5fYWN0dWFsICsgcmluZy0+cmVzZXJ2ZWRfc2l6ZTsKPiAgCQkJbmVlZF93 cmFwID0gdHJ1ZTsKPiAtCQl9IGVsc2UgaWYgKHRvdGFsX2J5dGVzID4gcmluZ2J1Zi0+c3BhY2Up IHsKPiArCQl9IGVsc2UgaWYgKHRvdGFsX2J5dGVzID4gcmluZy0+c3BhY2UpIHsKPiAgCQkJLyog Tm8gd3JhcHBpbmcgcmVxdWlyZWQsIGp1c3Qgd2FpdGluZy4gKi8KPiAgCQkJd2FpdF9ieXRlcyA9 IHRvdGFsX2J5dGVzOwo+ICAJCX0KPiBAQCAtMjMwNiw3ICsyMzA2LDcgQEAgc3RhdGljIGludCBy aW5nX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBieXRlcykK PiAgCQkJcmV0dXJuIHJldDsKPiAgCj4gIAkJaWYgKG5lZWRfd3JhcCkKPiAtCQkJcmluZ193cmFw KHJpbmdidWYpOwo+ICsJCQlyaW5nX3dyYXAocmluZyk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gQEAgLTIzMjUsMTQgKzIzMjUsMTQgQEAgaW50IGludGVsX3JpbmdfYmVnaW4oc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBudW1fZHdvcmRzKQo+ICAJaWYgKHJldCkKPiAg CQlyZXR1cm4gcmV0Owo+ICAKPiAtCXJlcS0+cmluZ2J1Zi0+c3BhY2UgLT0gbnVtX2R3b3JkcyAq IHNpemVvZih1aW50MzJfdCk7Cj4gKwlyZXEtPnJpbmctPnNwYWNlIC09IG51bV9kd29yZHMgKiBz aXplb2YodWludDMyX3QpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIC8qIEFsaWduIHRoZSBy aW5nIHRhaWwgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkgKi8KPiAgaW50IGludGVsX3JpbmdfY2Fj aGVsaW5lX2FsaWduKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJaW50IG51bV9kd29yZHMgPSAo cmluZy0+dGFpbCAmIChDQUNIRUxJTkVfQllURVMgLSAxKSkgLyBzaXplb2YodWludDMyX3QpOwo+ ICAJaW50IHJldDsKPiAgCj4gQEAgLTI0MDQsNyArMjQwNCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZf YnNkX3Jpbmdfd3JpdGVfdGFpbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICBzdGF0 aWMgaW50IGdlbjZfYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCj4gIAkJCSAgICAgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJdWludDMyX3QgY21kOwo+ICAJaW50 IHJldDsKPiAgCj4gQEAgLTI0NTAsNyArMjQ1MCw3IEBAIGdlbjhfcmluZ19kaXNwYXRjaF9leGVj YnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkgICAgICB1NjQg b2Zmc2V0LCB1MzIgbGVuLAo+ICAJCQkgICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKPiAg ewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgCWJvb2wgcHBndHQg PSBVU0VTX1BQR1RUKHJlcS0+aTkxNSkgJiYKPiAgCQkJIShkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfU0VDVVJFKTsKPiAgCWludCByZXQ7Cj4gQEAgLTI0NzYsNyArMjQ3Niw3IEBAIGhz d19yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEsCj4gIAkJCSAgICAgdTY0IG9mZnNldCwgdTMyIGxlbiwKPiAgCQkJICAgICB1bnNpZ25lZCBk aXNwYXRjaF9mbGFncykKPiAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSBy ZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu ZzsKPiAgCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwo+ IEBAIC0yNTAxLDcgKzI1MDEsNyBAQCBnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJICAgICAgdTY0IG9mZnNldCwgdTMy IGxlbiwKPiAgCQkJICAgICAgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9 IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKPiBAQCAtMjUyNCw3ICsyNTI0LDcgQEAgZ2VuNl9y aW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs Cj4gIHN0YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLAo+ICAJCQkgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAJdWludDMyX3QgY21kOwo+ICAJaW50 IHJldDsKPiAgCj4gLS0gCj4gMi42LjIKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==