From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 27/62] drm/i915: Rename request->ringbuf to request->ring Date: Mon, 6 Jun 2016 14:44:41 +0100 Message-ID: <57557E49.8080109@linux.intel.com> References: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> <1464971847-15809-28-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 782506E51D for ; Mon, 6 Jun 2016 13:44:43 +0000 (UTC) In-Reply-To: <1464971847-15809-28-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAzLzA2LzE2IDE3OjM2LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gTm93IHRoYXQgd2UgaGF2 ZSBkaXNhbWJ1aWdhdGVkIHJpbmcgYW5kIGVuZ2luZSwgd2UgY2FuIHVzZSB0aGUgY2xlYXJlcgo+ IGFuZCBtb3JlIGNvbnNpc3RlbnQgbmFtZSBmb3IgdGhlIGludGVsX3JpbmdidWZmZXIgcG9pbnRl ciBpbiB0aGUKPiByZXF1ZXN0LgoKVGhpcyBvbmUgbmVlZHMgYWxsIHRoZSBzdGFrZWhvbGRlcnMg dG8gYWdyZWUgYWJvdXQgdGhlIHJlbmFtZS4gQXMgCmJlZm9yZSwgSSBhbSBub3QgY29udmluY2Vk IGl0IGlzIGJldHRlci93b3J0aCBpdC4KClJlZ2FyZHMsCgpUdnJ0a28KCgo+IFNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgIHwgIDQgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICA0ICstCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCAgNiArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAgIHwgMTYgKysrLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggICAgfCAgMyArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgIHwgMjAgKysrLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwgMTAgKystLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgNTcgKysrKysrKysrLS0tLS0t LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAgfCAzNiAr KysrKystLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAg ICB8ICA4ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAg IHwgOTIgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gICAxMSBmaWxlcyBjaGFuZ2Vk LCAxMjYgaW5zZXJ0aW9ucygrKSwgMTMwIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDg5OTczMWY5YTJjNC4uYTc5MTFmMzlmNDE2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC01MTQs NyArNTE0LDcgQEAgc3RhdGljIGlubGluZSBpbnQKPiAgIG1pX3NldF9jb250ZXh0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgaHdfZmxhZ3MpCj4gICB7Cj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1Owo+IC0Jc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAl1MzIgZmxhZ3MgPSBod19mbGFncyB8IE1JX01N X1NQQUNFX0dUVDsKPiAgIAljb25zdCBpbnQgbnVtX3JpbmdzID0KPiAgIAkJLyogVXNlIGFuIGV4 dGVuZGVkIHcvYSBvbiBpdmIrIGlmIHNpZ25hbGxpbmcgZnJvbSBvdGhlciByaW5ncyAqLwo+IEBA IC02MTQsNyArNjE0LDcgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBod19mbGFncykKPiAgIHN0YXRpYyBpbnQgcmVtYXBfbDMoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzbGljZSkKPiAgIHsKPiAgIAl1MzIgKnJlbWFw X2luZm8gPSByZXEtPmk5MTUtPmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNlXTsKPiAtCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IGksIHJldDsKPgo+ICAgCWlm ICghcmVtYXBfaW5mbykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCj4gaW5kZXggOTk2NjNlODQyOWIzLi4yNDZiZDcwYzBjOWYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTExNDAsNyArMTE0MCw3IEBA IGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmV0aXJlX2NvbW1hbmRzKHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXJfcGFyYW1zICpwYXJhbXMpCj4gICBzdGF0aWMgaW50Cj4gICBpOTE1X3Jlc2V0X2dlbjdfc29s X29mZnNldHMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCWludCByZXQsIGk7Cj4KPiAgIAlp ZiAoIUlTX0dFTjcocmVxLT5pOTE1KSB8fCByZXEtPmVuZ2luZS0+aWQgIT0gUkNTKSB7Cj4gQEAg LTEyNzAsNyArMTI3MCw3IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3Qg aTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+Cj4gICAJaWYgKHBhcmFtcy0+ZW5naW5l LT5pZCA9PSBSQ1MgJiYKPiAgIAkgICAgaW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVf Y29uc3RhbnRzX21vZGUpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHBh cmFtcy0+cmVxdWVzdC0+cmluZ2J1ZjsKPiArCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu ZyA9IHBhcmFtcy0+cmVxdWVzdC0+cmluZzsKPgo+ICAgCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2lu KHBhcmFtcy0+cmVxdWVzdCwgNCk7Cj4gICAJCWlmIChyZXQpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmMKPiBpbmRleCA0YjRlM2RlNThhZDkuLmIwYTY0NGNlZGUyMCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMg aW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAg CQkJICB1bnNpZ25lZCBlbnRyeSwKPiAgIAkJCSAgZG1hX2FkZHJfdCBhZGRyKQo+ICAgewo+IC0J c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+Cj4gICAJ QlVHX09OKGVudHJ5ID49IDQpOwo+IEBAIC0xNjYwLDcgKzE2NjAsNyBAQCBzdGF0aWMgdWludDMy X3QgZ2V0X3BkX29mZnNldChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICBzdGF0aWMg aW50IGhzd19tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAgCQkJIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+Cj4gICAJLyogTkI6IFRMQnMgbXVz dCBiZSBmbHVzaGVkIGFuZCBpbnZhbGlkYXRlZCBiZWZvcmUgYSBzd2l0Y2ggKi8KPiBAQCAtMTY5 OSw3ICsxNjk5LDcgQEAgc3RhdGljIGludCB2Z3B1X21tX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQsCj4gICBzdGF0aWMgaW50IGdlbjdfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCwKPiAgIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp Cj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsK PiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCWludCBy ZXQ7Cj4KPiAgIAkvKiBOQjogVExCcyBtdXN0IGJlIGZsdXNoZWQgYW5kIGludmFsaWRhdGVkIGJl Zm9yZSBhIHN3aXRjaCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK PiBpbmRleCAwNTliYTg4ZTE4MmUuLmM2YTdhNzk4NGYxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiBAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCkKPiAgIAkgKiBOb3RlIHRoaXMgcmVxdWlyZXMgdGhhdCB3ZSBhcmUgYWx3YXlzIGNhbGxl ZCBpbiByZXF1ZXN0Cj4gICAJICogY29tcGxldGlvbiBvcmRlci4KPiAgIAkgKi8KPiAtCXJlcXVl c3QtPnJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKPiArCXJl cXVlc3QtPnJpbmctPmxhc3RfcmV0aXJlZF9oZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKPgo+ICAg CWk5MTVfZ2VtX3JlcXVlc3RfcmVtb3ZlX2Zyb21fY2xpZW50KHJlcXVlc3QpOwo+Cj4gQEAgLTQx NSw3ICs0MTUsNyBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QsCj4gICAJCQlib29sIGZsdXNoX2NhY2hlcykKPiAgIHsKPiAgIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nOwo+ICAgCXUzMiBy ZXF1ZXN0X3N0YXJ0Owo+ICAgCXUzMiByZXNlcnZlZF90YWlsOwo+ICAgCWludCByZXQ7Cj4gQEAg LTQyNCwxNCArNDI0LDE0IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIAkJcmV0dXJuOwo+Cj4gICAJZW5naW5lID0gcmVx dWVzdC0+ZW5naW5lOwo+IC0JcmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Cj4gKwlyaW5nID0g cmVxdWVzdC0+cmluZzsKPgo+ICAgCS8qCj4gICAJICogVG8gZW5zdXJlIHRoYXQgdGhpcyBjYWxs IHdpbGwgbm90IGZhaWwsIHNwYWNlIGZvciBpdHMgZW1pc3Npb25zCj4gICAJICogc2hvdWxkIGFs cmVhZHkgaGF2ZSBiZWVuIHJlc2VydmVkIGluIHRoZSByaW5nIGJ1ZmZlci4gTGV0IHRoZSByaW5n Cj4gICAJICoga25vdyB0aGF0IGl0IGlzIHRpbWUgdG8gdXNlIHRoYXQgc3BhY2UgdXAuCj4gICAJ ICovCj4gLQlyZXF1ZXN0X3N0YXJ0ID0gaW50ZWxfcmluZ19nZXRfdGFpbChyaW5nYnVmKTsKPiAr CXJlcXVlc3Rfc3RhcnQgPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmcpOwo+ICAgCXJlc2VydmVk X3RhaWwgPSByZXF1ZXN0LT5yZXNlcnZlZF9zcGFjZTsKPiAgIAlyZXF1ZXN0LT5yZXNlcnZlZF9z cGFjZSA9IDA7Cj4KPiBAQCAtNDc4LDIxICs0NzgsMjEgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCSAqIEdQVSBwcm9j ZXNzaW5nIHRoZSByZXF1ZXN0LCB3ZSBuZXZlciBvdmVyLWVzdGltYXRlIHRoZQo+ICAgCSAqIHBv c2l0aW9uIG9mIHRoZSBoZWFkLgo+ICAgCSAqLwo+IC0JcmVxdWVzdC0+cG9zdGZpeCA9IGludGVs X3JpbmdfZ2V0X3RhaWwocmluZ2J1Zik7Cj4gKwlyZXF1ZXN0LT5wb3N0Zml4ID0gaW50ZWxfcmlu Z19nZXRfdGFpbChyaW5nKTsKPgo+ICAgCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gICAJ CXJldCA9IGVuZ2luZS0+ZW1pdF9yZXF1ZXN0KHJlcXVlc3QpOwo+ICAgCWVsc2Ugewo+ICAgCQly ZXQgPSBlbmdpbmUtPmFkZF9yZXF1ZXN0KHJlcXVlc3QpOwo+Cj4gLQkJcmVxdWVzdC0+dGFpbCA9 IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZ2J1Zik7Cj4gKwkJcmVxdWVzdC0+dGFpbCA9IGludGVs X3JpbmdfZ2V0X3RhaWwocmluZyk7Cj4gICAJfQo+ICAgCS8qIE5vdCBhbGxvd2VkIHRvIGZhaWwh ICovCj4gICAJV0FSTihyZXQsICJlbWl0fGFkZF9yZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCByZXQp Owo+ICAgCS8qIFNhbml0eSBjaGVjayB0aGF0IHRoZSByZXNlcnZlZCBzaXplIHdhcyBsYXJnZSBl bm91Z2guICovCj4gLQlyZXQgPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmdidWYpIC0gcmVxdWVz dF9zdGFydDsKPiArCXJldCA9IGludGVsX3JpbmdfZ2V0X3RhaWwocmluZykgLSByZXF1ZXN0X3N0 YXJ0Owo+ICAgCWlmIChyZXQgPCAwKQo+IC0JCXJldCArPSByaW5nYnVmLT5zaXplOwo+ICsJCXJl dCArPSByaW5nLT5zaXplOwo+ICAgCVdBUk5fT05DRShyZXQgPiByZXNlcnZlZF90YWlsLAo+ICAg CQkgICJOb3QgZW5vdWdoIHNwYWNlIHJlc2VydmVkICglZCBieXRlcykgIgo+ICAgCQkgICJmb3Ig YWRkaW5nIHRoZSByZXF1ZXN0ICglZCBieXRlcylcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlcXVlc3QuaAo+IGluZGV4IGEzY2FjMTNhYjlhZi4uOTEzNTY1ZmJiMGUzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IEBAIC01OSw3ICs1OSw3 IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4gICAJICovCj4gICAJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nOwo+ICAgCXN0cnVjdCBpbnRlbF9zaWduYWxfbm9kZSBzaWduYWxpbmc7 Cj4KPiAgIAl1bnNpZ25lZCByZXNldF9jb3VudGVyOwo+IEBAIC04Niw3ICs4Niw2IEBAIHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4gICAJLyoqIFByZWFsbG9jYXRlIHNwYWNlIGluIHRo ZSByaW5nYnVmZmVyIGZvciB0aGUgZW1pdHRpbmcgdGhlIHJlcXVlc3QgKi8KPiAgIAl1MzIgcmVz ZXJ2ZWRfc3BhY2U7Cj4KPiAtCj4gICAJLyoqCj4gICAJICogQ29udGV4dCByZWxhdGVkIHRvIHRo ZSBwcmV2aW91cyByZXF1ZXN0Lgo+ICAgCSAqIEFzIHRoZSBjb250ZXh0cyBhcmUgYWNjZXNzZWQg YnkgdGhlIGhhcmR3YXJlIHVudGlsIHRoZSBzd2l0Y2ggaXMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiBpbmRleCBkMTY2N2FhNjQwZWYuLmI5MzQ5ODZiYjExNyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0xMDg5LDcgKzEwODksNyBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNvcmRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAgCQlyZXF1ZXN0ID0gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVz dChlbmdpbmUpOwo+ICAgCQlpZiAocmVxdWVzdCkgewo+ICAgCQkJc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm07Cj4gLQkJCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyYjsKPiArCQkJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmc7Cj4KPiAgIAkJCXZtID0gcmVxdWVzdC0+Y3R4ICYm IHJlcXVlc3QtPmN0eC0+cHBndHQgPwo+ICAgCQkJCSZyZXF1ZXN0LT5jdHgtPnBwZ3R0LT5iYXNl IDoKPiBAQCAtMTEwNyw3ICsxMTA3LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX3Jp bmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCWlmIChIQVNfQlJP S0VOX0NTX1RMQihkZXZfcHJpdikpCj4gICAJCQkJZXJyb3ItPnJpbmdbaV0ud2FfYmF0Y2hidWZm ZXIgPQo+ICAgCQkJCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKPiAt CQkJCQkJCSAgICAgZW5naW5lLT5zY3JhdGNoLm9iaik7Cj4gKwkJCQkJCQkJICAgICAgZW5naW5l LT5zY3JhdGNoLm9iaik7Cj4KPiAgIAkJCWlmIChyZXF1ZXN0LT5waWQpIHsKPiAgIAkJCQlzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4gQEAgLTExMjMsMjMgKzExMjMsMjEgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPgo+ICAgCQkJZXJyb3ItPnNpbXVsYXRlZCB8PSByZXF1ZXN0LT5jdHgtPmZsYWdzICYgQ09O VEVYVF9OT19FUlJPUl9DQVBUVVJFOwo+Cj4gLQkJCXJiID0gcmVxdWVzdC0+cmluZ2J1ZjsKPiAt CQkJZXJyb3ItPnJpbmdbaV0uY3B1X3JpbmdfaGVhZCA9IHJiLT5oZWFkOwo+IC0JCQllcnJvci0+ cmluZ1tpXS5jcHVfcmluZ190YWlsID0gcmItPnRhaWw7Cj4gKwkJCXJpbmcgPSByZXF1ZXN0LT5y aW5nOwo+ICsJCQllcnJvci0+cmluZ1tpXS5jcHVfcmluZ19oZWFkID0gcmluZy0+aGVhZDsKPiAr CQkJZXJyb3ItPnJpbmdbaV0uY3B1X3JpbmdfdGFpbCA9IHJpbmctPnRhaWw7Cj4gICAJCQllcnJv ci0+cmluZ1tpXS5yaW5nYnVmZmVyID0KPiAgIAkJCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2Ny ZWF0ZShkZXZfcHJpdiwKPiAtCQkJCQkJCSAgICAgIHJiLT5vYmopOwo+ICsJCQkJCQkJICAgICAg cmluZy0+b2JqKTsKPiAgIAkJfQo+Cj4gICAJCWVycm9yLT5yaW5nW2ldLmh3c19wYWdlID0KPiAg IAkJCWk5MTVfZXJyb3JfZ2d0dF9vYmplY3RfY3JlYXRlKGRldl9wcml2LAo+ICAgCQkJCQkJICAg ICAgZW5naW5lLT5zdGF0dXNfcGFnZS5vYmopOwo+Cj4gLQkJaWYgKGVuZ2luZS0+d2FfY3R4Lm9i aikgewo+IC0JCQllcnJvci0+cmluZ1tpXS53YV9jdHggPQo+IC0JCQkJaTkxNV9lcnJvcl9nZ3R0 X29iamVjdF9jcmVhdGUoZGV2X3ByaXYsCj4gLQkJCQkJCQkgICAgICBlbmdpbmUtPndhX2N0eC5v YmopOwo+IC0JCX0KPiArCQllcnJvci0+cmluZ1tpXS53YV9jdHggPQo+ICsJCQlpOTE1X2Vycm9y X2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKPiArCQkJCQkJICAgICAgZW5naW5lLT53YV9j dHgub2JqKTsKPgo+ICAgCQlpOTE1X2dlbV9yZWNvcmRfYWN0aXZlX2NvbnRleHQoZW5naW5lLCBl cnJvciwgJmVycm9yLT5yaW5nW2ldKTsKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCAyY2JhOTEyMDdkN2UuLjJkYWZiZmJjODEzNCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTExNzQsNyArMTExNzQsNyBAQCBzdGF0aWMgaW50 IGludGVsX2dlbjJfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCSBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkgdWludDMyX3QgZmxhZ3Mp Cj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsK PiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgIAl1MzIg ZmxpcF9tYXNrOwo+ICAgCWludCByZXQ7Cj4gQEAgLTExMjA4LDcgKzExMjA4LDcgQEAgc3RhdGlj IGludCBpbnRlbF9nZW4zX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJ CQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkJIHVpbnQzMl90IGZs YWdzKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdi dWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gICAJ dTMyIGZsaXBfbWFzazsKPiAgIAlpbnQgcmV0Owo+IEBAIC0xMTIzOSw3ICsxMTIzOSw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfZ2VuNF9xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g ICAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCSB1aW50MzJf dCBmbGFncykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5y aW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4g ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gICAJdWludDMyX3QgcGYsIHBpcGVzcmM7Cj4gQEAgLTExMjc3LDcgKzExMjc3LDcgQEAgc3Rh dGljIGludCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg IAkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkJIHVpbnQzMl90 IGZsYWdzKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJp bmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiAgIAl1aW50MzJfdCBwZiwgcGlwZXNyYzsKPiBAQCAtMTEzMTIsNyArMTEzMTIsNyBAQCBzdGF0 aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAg CQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCQkgdWludDMyX3Qg ZmxhZ3MpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmlu Z2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAg CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAg IAl1aW50MzJfdCBwbGFuZV9iaXQgPSAwOwo+ICAgCWludCBsZW4sIHJldDsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+IGluZGV4IGExODIwZDUzMWU0OS4uMjI5NTQ1ZmM1YjRhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtNjkyLDcgKzY5Miw3IEBAIGludCBpbnRlbF9s b2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0Cj4gICAJCQlyZXR1cm4gcmV0Owo+ICAgCX0KPgo+IC0JcmVxdWVzdC0+cmlu Z2J1ZiA9IGNlLT5yaW5nYnVmOwo+ICsJcmVxdWVzdC0+cmluZyA9IGNlLT5yaW5nYnVmOwo+Cj4g ICAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gICAJCS8qCj4gQEAgLTc0OCwx MSArNzQ4LDExIEBAIGVycl91bnBpbjoKPiAgIHN0YXRpYyBpbnQKPiAgIGludGVsX2xvZ2ljYWxf cmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXF1ZXN0 LT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0LT5y aW5nOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2lu ZTsKPgo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+IC0JcmVxdWVzdC0+dGFpbCA9 IHJpbmdidWYtPnRhaWw7Cj4gKwlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Cj4gKwlyZXF1ZXN0 LT50YWlsID0gcmluZy0+dGFpbDsKPgo+ICAgCS8qCj4gICAJICogSGVyZSB3ZSBhZGQgdHdvIGV4 dHJhIE5PT1BzIGFzIHBhZGRpbmcgdG8gYXZvaWQKPiBAQCAtNzYwLDkgKzc2MCw5IEBAIGludGVs X2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0KQo+ICAgCSAqCj4gICAJICogQ2FsbGVyIG11c3QgcmVzZXJ2ZSBXQV9UQUlM X0RXT1JEUyBmb3IgdXMhCj4gICAJICovCj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlf Tk9PUCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gLQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7 Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7Cj4KPiAgIAkvKiBXZSBrZWVwIHRoZSBwcmV2aW91cyBjb250ZXh0IGFsaXZlIHVu dGlsIHdlIHJldGlyZSB0aGUgZm9sbG93aW5nCj4gICAJICogcmVxdWVzdC4gVGhpcyBlbnN1cmVz IHRoYXQgYW55IHRoZSBjb250ZXh0IG9iamVjdCBpcyBzdGlsbCBwaW5uZWQKPiBAQCAtODA1LDcg KzgwNSw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICAgICAgICpkZXYg PSBwYXJhbXMtPmRldjsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBwYXJh bXMtPmVuZ2luZTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBwYXJh bXMtPmN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZyA9IHBhcmFtcy0+cmVxdWVzdC0+cmluZzsKPiAgIAl1NjQgZXhlY19zdGFy dDsKPiAgIAlpbnQgaW5zdHBfbW9kZTsKPiAgIAl1MzIgaW5zdHBfbWFzazsKPiBAQCAtODE3LDcg KzgxNyw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAgCWNhc2UgSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxf R0VORVJBTDoKPiAgIAljYXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfQUJTT0xVVEU6Cj4gICAJY2Fz ZSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFOgo+IC0JCWlmIChpbnN0cF9tb2RlICE9 IDAgJiYgZW5naW5lICE9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU10pIHsKPiArCQlpZiAoaW5zdHBf bW9kZSAhPSAwICYmIGVuZ2luZS0+aWQgIT0gUkNTKSB7Cj4gICAJCQlEUk1fREVCVUcoIm5vbi0w IHJlbCBjb25zdGFudHMgbW9kZSBvbiBub24tUkNTXG4iKTsKPiAgIAkJCXJldHVybiAtRUlOVkFM Owo+ICAgCQl9Cj4gQEAgLTg0NiwxNyArODQ2LDE3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3Vi bWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAgCWlmIChy ZXQpCj4gICAJCXJldHVybiByZXQ7Cj4KPiAtCWlmIChlbmdpbmUgPT0gJmRldl9wcml2LT5lbmdp bmVbUkNTXSAmJgo+ICsJaWYgKGVuZ2luZS0+aWQgPT0gUkNTICYmCj4gICAJICAgIGluc3RwX21v ZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Cj4gICAJCXJldCA9IGlu dGVsX3JpbmdfYmVnaW4ocGFyYW1zLT5yZXF1ZXN0LCA0KTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJ CXJldHVybiByZXQ7Cj4KPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4g LQkJaW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPiAt CQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIElOU1RQTSk7Cj4gLQkJaW50ZWxfcmluZ19l bWl0KHJpbmdidWYsIGluc3RwX21hc2sgPDwgMTYgfCBpbnN0cF9tb2RlKTsKPiAtCQlpbnRlbF9y aW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1Ap Owo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Cj4g KwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBJTlNUUE0pOwo+ICsJCWludGVsX3JpbmdfZW1p dChyaW5nLCBpbnN0cF9tYXNrIDw8IDE2IHwgaW5zdHBfbW9kZSk7Cj4gKwkJaW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOwo+Cj4gICAJCWRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9 IGluc3RwX21vZGU7Cj4gICAJfQo+IEBAIC0xMDExLDcgKzEwMTEsNyBAQCBzdGF0aWMgaW50IGlu dGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQo+ICAgewo+ICAgCWludCByZXQsIGk7Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n ID0gcmVxLT5yaW5nOwo+ICAgCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+aTkx NS0+d29ya2Fyb3VuZHM7Cj4KPiAgIAlpZiAody0+Y291bnQgPT0gMCkKPiBAQCAtMTAyNiwxNCAr MTAyNiwxNCBAQCBzdGF0aWMgaW50IGludGVsX2xvZ2ljYWxfcmluZ193b3JrYXJvdW5kc19lbWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgCWlmIChyZXQpCj4gICAJCXJl dHVybiByZXQ7Cj4KPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVS X0lNTSh3LT5jb3VudCkpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX0xPQURfUkVHSVNU RVJfSU1NKHctPmNvdW50KSk7Cj4gICAJZm9yIChpID0gMDsgaSA8IHctPmNvdW50OyBpKyspIHsK PiAtCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIHctPnJlZ1tpXS5hZGRyKTsKPiAtCQlp bnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwgdy0+cmVnW2ldLnZhbHVlKTsKPiArCQlpbnRlbF9yaW5n X2VtaXRfcmVnKHJpbmcsIHctPnJlZ1tpXS5hZGRyKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmlu Zywgdy0+cmVnW2ldLnZhbHVlKTsKPiAgIAl9Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1Ziwg TUlfTk9PUCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4KPiAtCWludGVs X3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKPiArCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPgo+ ICAgCWVuZ2luZS0+Z3B1X2NhY2hlc19kaXJ0eSA9IHRydWU7Cj4gICAJcmV0ID0gbG9naWNhbF9y aW5nX2ZsdXNoX2FsbF9jYWNoZXMocmVxKTsKPiBAQCAtMTUwNiw3ICsxNTA2LDcgQEAgc3RhdGlj IGludCBnZW45X2luaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9wZHBzKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCA9IHJlcS0+Y3R4LT5wcGd0dDsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n ID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmc7Cj4gICAJY29uc3QgaW50IG51bV9scmlfY21kcyA9IEdFTjhfTEVHQUNZX1BEUEVTICog MjsKPiAgIAlpbnQgaSwgcmV0Owo+Cj4gQEAgLTE1MzMsNyArMTUzMyw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAgIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJICAgICAgdTY0IG9mZnNldCwgdW5zaWduZWQgZGlzcGF0 Y2hfZmxhZ3MpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+ cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ ICAgCWJvb2wgcHBndHQgPSAhKGRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUp Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTU5MCw4ICsxNTkwLDcgQEAgc3RhdGljIGludCBnZW44 X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCQkJ ICAgdTMyIGludmFsaWRhdGVfZG9tYWlucywKPiAgIAkJCSAgIHUzMiB1bnVzZWQpCj4gICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmdidWY7Cj4gLQlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByaW5nLT5lbmdpbmU7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Cj4gICAJdWludDMyX3QgY21k Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTYxMCw3ICsxNjA5LDcgQEAgc3RhdGljIGludCBnZW44 X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+Cj4gICAJ aWYgKGludmFsaWRhdGVfZG9tYWlucyAmIEk5MTVfR0VNX0dQVV9ET01BSU5TKSB7Cj4gICAJCWNt ZCB8PSBNSV9JTlZBTElEQVRFX1RMQjsKPiAtCQlpZiAoZW5naW5lLT5pZCA9PSBWQ1MpCj4gKwkJ aWYgKHJlcXVlc3QtPmVuZ2luZS0+aWQgPT0gVkNTKQo+ICAgCQkJY21kIHw9IE1JX0lOVkFMSURB VEVfQlNEOwo+ICAgCX0KPgo+IEBAIC0xNjI5LDcgKzE2MjgsNyBAQCBzdGF0aWMgaW50IGdlbjhf ZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ ICAgCQkJCSAgdTMyIGludmFsaWRhdGVfZG9tYWlucywKPiAgIAkJCQkgIHUzMiBmbHVzaF9kb21h aW5zKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0LT5y aW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0LT5yaW5n Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsK PiAgIAl1MzIgc2NyYXRjaF9hZGRyID0gZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICog Q0FDSEVMSU5FX0JZVEVTOwo+ICAgCWJvb2wgdmZfZmx1c2hfd2EgPSBmYWxzZTsKPiBAQCAtMTcx MSw3ICsxNzEwLDcgQEAgc3RhdGljIHZvaWQgYnh0X2Ffc2Vxbm9fYmFycmllcihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgewo+IC0Jc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0LT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwo+ICAgCWludCByZXQ7Cj4KPiAgIAly ZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDYgKyBXQV9UQUlMX0RXT1JEUyk7Cj4gQEAg LTE3MzQsNyArMTczMyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Cj4gICBzdGF0aWMgaW50IGdlbjhfZW1pdF9y ZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gICB7 Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmdidWY7Cj4g KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Cj4gICAJaW50 IHJldDsKPgo+ICAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgOCArIFdBX1RBSUxf RFdPUkRTKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gaW5kZXggODUxM2JmMDZkNGRm Li40YjQ0YmJjZmQ3Y2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bW9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gQEAgLTIz MSw3ICsyMzEsNyBAQCBpbnQgaW50ZWxfbW9jc19pbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCSAgIGNvbnN0IHN0cnVjdCBk cm1faTkxNV9tb2NzX3RhYmxlICp0YWJsZSkKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgZW5naW5lID0gcmVx LT5lbmdpbmUtPmlkOwo+ICAgCXVuc2lnbmVkIGludCBpbmRleDsKPiAgIAlpbnQgcmV0Owo+IEBA IC0yNDMsMTEgKzI0MywxMSBAQCBzdGF0aWMgaW50IGVtaXRfbW9jc19jb250cm9sX3RhYmxlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVy biByZXQ7Cj4KPiAtCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9MT0FEX1JFR0lTVEVSX0lN TShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9M T0FEX1JFR0lTVEVSX0lNTShHRU45X05VTV9NT0NTX0VOVFJJRVMpKTsKPgo+ICAgCWZvciAoaW5k ZXggPSAwOyBpbmRleCA8IHRhYmxlLT5zaXplOyBpbmRleCsrKSB7Cj4gLQkJaW50ZWxfcmluZ19l bWl0X3JlZyhyaW5nYnVmLCBtb2NzX3JlZ2lzdGVyKGVuZ2luZSwgaW5kZXgpKTsKPiAtCQlpbnRl bF9yaW5nX2VtaXQocmluZ2J1ZiwgdGFibGUtPnRhYmxlW2luZGV4XS5jb250cm9sX3ZhbHVlKTsK PiArCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBpbmRl eCkpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCB0YWJsZS0+dGFibGVbaW5kZXhdLmNvbnRy b2xfdmFsdWUpOwo+ICAgCX0KPgo+ICAgCS8qCj4gQEAgLTI1OSwxMiArMjU5LDEyIEBAIHN0YXRp YyBpbnQgZW1pdF9tb2NzX2NvbnRyb2xfdGFibGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gICAJICogdGhhdCB2YWx1ZSB0byBhbGwgdGhlIHVzZWQgZW50cmllcy4KPiAgIAkg Ki8KPiAgIAlmb3IgKDsgaW5kZXggPCBHRU45X05VTV9NT0NTX0VOVFJJRVM7IGluZGV4KyspIHsK PiAtCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsIG1vY3NfcmVnaXN0ZXIoZW5naW5lLCBp bmRleCkpOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCB0YWJsZS0+dGFibGVbMF0uY29u dHJvbF92YWx1ZSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBtb2NzX3JlZ2lzdGVy KGVuZ2luZSwgaW5kZXgpKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdGFibGUtPnRhYmxl WzBdLmNvbnRyb2xfdmFsdWUpOwo+ICAgCX0KPgo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdidWYs IE1JX05PT1ApOwo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICsJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwo+Cj4g ICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgaW5saW5lIHUz MiBsM2NjX2NvbWJpbmUoY29uc3Qgc3RydWN0IGRybV9pOTE1X21vY3NfdGFibGUgKnRhYmxlLAo+ ICAgc3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSwKPiAgIAkJCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfbW9jc190YWJsZSAqdGFi bGUpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmlu Z2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAg CXVuc2lnbmVkIGludCBpOwo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMzAyLDE4ICszMDIsMTggQEAg c3RhdGljIGludCBlbWl0X21vY3NfbDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gLQlpbnRlbF9yaW5n X2VtaXQocmluZ2J1ZiwKPiArCWludGVsX3JpbmdfZW1pdChyaW5nLAo+ICAgCQkJTUlfTE9BRF9S RUdJU1RFUl9JTU0oR0VOOV9OVU1fTU9DU19FTlRSSUVTIC8gMikpOwo+Cj4gICAJZm9yIChpID0g MDsgaSA8IHRhYmxlLT5zaXplLzI7IGkrKykgewo+IC0JCWludGVsX3JpbmdfZW1pdF9yZWcocmlu Z2J1ZiwgR0VOOV9MTkNGQ01PQ1MoaSkpOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nYnVmLCBs M2NjX2NvbWJpbmUodGFibGUsIDIqaSwgMippKzEpKTsKPiArCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmcsIEdFTjlfTE5DRkNNT0NTKGkpKTsKPiArCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbDNj Y19jb21iaW5lKHRhYmxlLCAyKmksIDIqaSsxKSk7Cj4gICAJfQo+Cj4gICAJaWYgKHRhYmxlLT5z aXplICYgMHgwMSkgewo+ICAgCQkvKiBPZGQgdGFibGUgc2l6ZSAtIDEgbGVmdCBvdmVyICovCj4g LQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nYnVmLCBHRU45X0xOQ0ZDTU9DUyhpKSk7Cj4gLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmdidWYsIGwzY2NfY29tYmluZSh0YWJsZSwgMippLCAwKSk7Cj4g KwkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBHRU45X0xOQ0ZDTU9DUyhpKSk7Cj4gKwkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIGwzY2NfY29tYmluZSh0YWJsZSwgMippLCAwKSk7Cj4gICAJCWkr KzsKPiAgIAl9Cj4KPiBAQCAtMzIzLDEyICszMjMsMTIgQEAgc3RhdGljIGludCBlbWl0X21vY3Nf bDNjY190YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkgKiB0aGV5 IGFyZSByZXNlcnZlZCBieSB0aGUgaGFyZHdhcmUuCj4gICAJICovCj4gICAJZm9yICg7IGkgPCBH RU45X05VTV9NT0NTX0VOVFJJRVMgLyAyOyBpKyspIHsKPiAtCQlpbnRlbF9yaW5nX2VtaXRfcmVn KHJpbmdidWYsIEdFTjlfTE5DRkNNT0NTKGkpKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZ2J1 ZiwgbDNjY19jb21iaW5lKHRhYmxlLCAwLCAwKSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0X3JlZyhy aW5nLCBHRU45X0xOQ0ZDTU9DUyhpKSk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGwzY2Nf Y29tYmluZSh0YWJsZSwgMCwgMCkpOwo+ICAgCX0KPgo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmdi dWYsIE1JX05PT1ApOwo+IC0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmdidWYpOwo+ICsJaW50ZWxf cmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwo+ICsJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwo+ Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ IGluZGV4IGJlNzljNDQ5N2FmNS4uZjljMDYyZmVhMzlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX292ZXJsYXkuYwo+IEBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIGludCBpbnRlbF9v dmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+Cj4gICAJb3ZlcmxheS0+ YWN0aXZlID0gdHJ1ZTsKPgo+IC0JcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXJpbmcgPSByZXEt PnJpbmc7Cj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJMQVlfRkxJUCB8IE1JX09W RVJMQVlfT04pOwo+ICAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBvdmVybGF5LT5mbGlwX2FkZHIg fCBPRkNfVVBEQVRFKTsKPiAgIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfV0FJVF9GT1JfRVZF TlQgfCBNSV9XQUlUX0ZPUl9PVkVSTEFZX0ZMSVApOwo+IEBAIC0yOTUsNyArMjk1LDcgQEAgc3Rh dGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVy bGF5LAo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCX0KPgo+IC0JcmluZyA9IHJlcS0+cmluZ2J1ZjsK PiArCXJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX09WRVJM QVlfRkxJUCB8IE1JX09WRVJMQVlfQ09OVElOVUUpOwo+ICAgCWludGVsX3JpbmdfZW1pdChyaW5n LCBmbGlwX2FkZHIpOwo+ICAgCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiBAQCAtMzYyLDcg KzM2Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292ZXJs YXkgKm92ZXJsYXkpCj4gICAJCXJldHVybiByZXQ7Cj4gICAJfQo+Cj4gLQlyaW5nID0gcmVxLT5y aW5nYnVmOwo+ICsJcmluZyA9IHJlcS0+cmluZzsKPiAgIAkvKiB3YWl0IGZvciBvdmVybGF5IHRv IGdvIGlkbGUgKi8KPiAgIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfT1ZFUkxBWV9GTElQIHwg TUlfT1ZFUkxBWV9DT05USU5VRSk7Cj4gICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGZsaXBfYWRk cik7Cj4gQEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfcmVsZWFz ZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ICAgCQkJcmV0dXJuIHJl dDsKPiAgIAkJfQo+Cj4gLQkJcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCQlyaW5nID0gcmVxLT5y aW5nOwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQocmluZywKPiAgIAkJCQlNSV9XQUlUX0ZPUl9FVkVO VCB8IE1JX1dBSVRfRk9SX09WRVJMQVlfRkxJUCk7Cj4gICAJCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9OT09QKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5k ZXggYWNlNDU1YjJiMmQ2Li4wZjEzZTk5MDBiZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTcwLDcgKzcwLDcgQEAgZ2VuMl9yZW5kZXJfcmluZ19m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJICAgICAgIHUzMglp bnZhbGlkYXRlX2RvbWFpbnMsCj4gICAJCSAgICAgICB1MzIJZmx1c2hfZG9tYWlucykKPiAgIHsK PiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJdTMyIGNtZDsKPiAg IAlpbnQgcmV0Owo+Cj4gQEAgLTk3LDcgKzk3LDcgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJICAgICAgIHUzMglpbnZhbGlk YXRlX2RvbWFpbnMsCj4gICAJCSAgICAgICB1MzIJZmx1c2hfZG9tYWlucykKPiAgIHsKPiAtCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJdTMyIGNtZDsKPiAgIAlpbnQg cmV0Owo+Cj4gQEAgLTE4Nyw3ICsxODcsNyBAQCBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgc3RhdGljIGludAo+ICAgaW50ZWxfZW1p dF9wb3N0X3N5bmNfbm9uemVyb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSkKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVm Owo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJdTMy IHNjcmF0Y2hfYWRkciA9Cj4gICAJICAgICAgIAlyZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zm c2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiAgIAlpbnQgcmV0Owo+IEBAIC0yMjQsNyArMjI0 LDcgQEAgc3RhdGljIGludAo+ICAgZ2VuNl9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJICAgICAgIHUzMiBpbnZhbGlkYXRlX2RvbWFpbnMs IHUzMiBmbHVzaF9kb21haW5zKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJl cS0+cmluZzsKPiAgIAl1MzIgc2NyYXRjaF9hZGRyID0KPiAgIAkgICAgICAgCXJlcS0+ZW5naW5l LT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwo+ICAgCXUzMiBmbGFn cyA9IDA7Cj4gQEAgLTI3Nyw3ICsyNzcsNyBAQCBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgc3RhdGljIGludAo+ICAgZ2VuN19yZW5k ZXJfcmluZ19jc19zdGFsbF93YShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAg IHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsK Pgo+ICAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKPiBAQCAtMjk5LDcgKzI5OSw3 IEBAIHN0YXRpYyBpbnQKPiAgIGdlbjdfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCSAgICAgICB1MzIgaW52YWxpZGF0ZV9kb21haW5zLCB1 MzIgZmx1c2hfZG9tYWlucykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n ID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmc7Cj4gICAJdTMyIHNjcmF0Y2hfYWRkciA9Cj4gICAJICAgICAgIAlyZXEtPmVuZ2luZS0+ c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKPiAgIAl1MzIgZmxhZ3Mg PSAwOwo+IEBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIGludAo+ICAgZ2VuOF9lbWl0X3BpcGVf Y29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJICAgICAgIHUz MiBmbGFncywgdTMyIHNjcmF0Y2hfYWRkcikKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJp bmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsKPgo+ICAgCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCA2KTsKPiBAQCAtNjgwLDcgKzY4MCw3IEBAIGVycjoKPgo+ICAgc3RhdGljIGludCBp bnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1 ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCXN0 cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+aTkxNS0+d29ya2Fyb3VuZHM7Cj4gICAJ aW50IHJldCwgaTsKPgo+IEBAIC0xMjQyLDcgKzEyNDIsNyBAQCBzdGF0aWMgaW50IGdlbjhfcmNz X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICAJ CQkgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKPiAgIHsKPiAgICNkZWZpbmUgTUJPWF9VUERB VEVfRFdPUkRTIDgKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpzaWduYWxsZXIgPSBzaWdu YWxsZXJfcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnNpZ25hbGxl ciA9IHNpZ25hbGxlcl9yZXEtPnJpbmc7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gc2lnbmFsbGVyX3JlcS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICp3YWl0ZXI7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gQEAgLTEyODIsNyArMTI4 Miw3IEBAIHN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAgIAkJCSAgIHVuc2lnbmVkIGludCBudW1fZHdvcmRzKQo+ ICAgewo+ICAgI2RlZmluZSBNQk9YX1VQREFURV9EV09SRFMgNgo+IC0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+cmluZzsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzaWduYWxsZXJfcmVxLT5pOTE1Owo+ ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlcjsKPiAgIAllbnVtIGludGVsX2VuZ2lu ZV9pZCBpZDsKPiBAQCAtMTMxOSw3ICsxMzE5LDcgQEAgc3RhdGljIGludCBnZW44X3hjc19zaWdu YWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAo+ICAgc3RhdGlj IGludCBnZW42X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9y ZXEsCj4gICAJCSAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2R3b3JkcykKPiAgIHsKPiAtCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpzaWduYWxsZXIgPSBzaWduYWxsZXJfcmVxLT5yaW5nYnVmOwo+ ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPnJp bmc7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc2lnbmFsbGVyX3Jl cS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp1c2VsZXNzOwo+ICAgCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwo+IEBAIC0xMzYzLDcgKzEzNjMsNyBAQCBzdGF0aWMgaW50IGdl bjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKPiAg IHN0YXRpYyBpbnQKPiAgIGdlbjZfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+ cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ ICAgCWludCByZXQ7Cj4KPiAgIAlpZiAocmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwpCj4g QEAgLTEzODcsNyArMTM4Nyw3IEBAIHN0YXRpYyBpbnQKPiAgIGdlbjhfcmVuZGVyX2FkZF9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAlpbnQgcmV0Owo+Cj4gICAJaWYgKGVuZ2luZS0+c2Vt YXBob3JlLnNpZ25hbCkKPiBAQCAtMTQzMiw3ICsxNDMyLDcgQEAgZ2VuOF9yaW5nX3N5bmMoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0ZXJfcmVxLAo+ICAgCSAgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpzaWduYWxsZXIsCj4gICAJICAgICAgIHUzMiBzZXFubykKPiAgIHsK PiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICp3YWl0ZXIgPSB3YWl0ZXJfcmVxLT5yaW5nYnVm Owo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKndhaXRlciA9IHdhaXRlcl9yZXEtPnJpbmc7 Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gd2FpdGVyX3JlcS0+aTkx NTsKPiAgIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7Cj4gICAJaW50IHJldDsKPiBAQCAt MTQ2OSw3ICsxNDY5LDcgQEAgZ2VuNl9yaW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICp3YWl0ZXJfcmVxLAo+ICAgCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWdu YWxsZXIsCj4gICAJICAgICAgIHUzMiBzZXFubykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICp3YWl0ZXIgPSB3YWl0ZXJfcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKndhaXRlciA9IHdhaXRlcl9yZXEtPnJpbmc7Cj4gICAJdTMyIGR3MSA9IE1JX1NF TUFQSE9SRV9NQk9YIHwKPiAgIAkJICBNSV9TRU1BUEhPUkVfQ09NUEFSRSB8Cj4gICAJCSAgTUlf U0VNQVBIT1JFX1JFR0lTVEVSOwo+IEBAIC0xNjAzLDcgKzE2MDMsNyBAQCBic2RfcmluZ19mbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkgICAgICAgdTMyICAgICBp bnZhbGlkYXRlX2RvbWFpbnMsCj4gICAJICAgICAgIHUzMiAgICAgZmx1c2hfZG9tYWlucykKPiAg IHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsK Pgo+ICAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAyKTsKPiBAQCAtMTYxOSw3ICsxNjE5 LDcgQEAgYnNkX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4g ICBzdGF0aWMgaW50Cj4gICBpOXh4X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsK PiAgIAlpbnQgcmV0Owo+Cj4gICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+IEBA IC0xNjk3LDcgKzE2OTcsNyBAQCBpOTY1X2Rpc3BhdGNoX2V4ZWNidWZmZXIoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkgdTY0IG9mZnNldCwgdTMyIGxlbmd0aCwKPiAg IAkJCSB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJaW50IHJldDsKPgo+ICAgCXJldCA9IGludGVsX3Jpbmdf YmVnaW4ocmVxLCAyKTsKPiBAQCAtMTcyNCw3ICsxNzI0LDcgQEAgaTgzMF9kaXNwYXRjaF9leGVj YnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJIHU2NCBvZmZz ZXQsIHUzMiBsZW4sCj4gICAJCQkgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCj4gICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCXUzMiBjc19vZmZzZXQgPSBy ZXEtPmVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTc4 Niw3ICsxNzg2LDcgQEAgaTkxNV9kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJIHU2NCBvZmZzZXQsIHUzMiBsZW4sCj4gICAJCQkgdW5z aWduZWQgZGlzcGF0Y2hfZmxhZ3MpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0g cmVxLT5yaW5nOwo+ICAgCWludCByZXQ7Cj4KPiAgIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJl cSwgMik7Cj4gQEAgLTIyMjEsNyArMjIyMSw3IEBAIGludCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVl c3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkgKi8K PiAgIAlyZXF1ZXN0LT5yZXNlcnZlZF9zcGFjZSArPSBMRUdBQ1lfUkVRVUVTVF9TSVpFOwo+Cj4g LQlyZXF1ZXN0LT5yaW5nYnVmID0gcmVxdWVzdC0+ZW5naW5lLT5idWZmZXI7Cj4gKwlyZXF1ZXN0 LT5yaW5nID0gcmVxdWVzdC0+ZW5naW5lLT5idWZmZXI7Cj4KPiAgIAlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcXVlc3QsIDApOwo+ICAgCWlmIChyZXQpCj4gQEAgLTIyMzMsMTIgKzIyMzMsMTIg QEAgaW50IGludGVsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Cj4gICBzdGF0aWMgaW50IHdhaXRfZm9yX3NwYWNlKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCj4gICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqdGFyZ2V0Owo+Cj4gLQlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nYnVmKTsKPiAtCWlm IChyaW5nYnVmLT5zcGFjZSA+PSBieXRlcykKPiArCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJp bmcpOwo+ICsJaWYgKHJpbmctPnNwYWNlID49IGJ5dGVzKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICAg CS8qCj4gQEAgLTIyNjAsMTIgKzIyNjAsMTIgQEAgc3RhdGljIGludCB3YWl0X2Zvcl9zcGFjZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IGJ5dGVzKQo+ICAgCQkgKiBmcm9t IG11bHRpcGxlIHJpbmdidWZmZXJzLiBIZXJlLCB3ZSBtdXN0IGlnbm9yZSBhbnkgdGhhdAo+ICAg CQkgKiBhcmVuJ3QgZnJvbSB0aGUgcmluZ2J1ZmZlciB3ZSdyZSBjb25zaWRlcmluZy4KPiAgIAkJ ICovCj4gLQkJaWYgKHRhcmdldC0+cmluZ2J1ZiAhPSByaW5nYnVmKQo+ICsJCWlmICh0YXJnZXQt PnJpbmcgIT0gcmluZykKPiAgIAkJCWNvbnRpbnVlOwo+Cj4gICAJCS8qIFdvdWxkIGNvbXBsZXRp b24gb2YgdGhpcyByZXF1ZXN0IGZyZWUgZW5vdWdoIHNwYWNlPyAqLwo+IC0JCXNwYWNlID0gX19p bnRlbF9yaW5nX3NwYWNlKHRhcmdldC0+cG9zdGZpeCwgcmluZ2J1Zi0+dGFpbCwKPiAtCQkJCQkg ICByaW5nYnVmLT5zaXplKTsKPiArCQlzcGFjZSA9IF9faW50ZWxfcmluZ19zcGFjZSh0YXJnZXQt PnBvc3RmaXgsIHJpbmctPnRhaWwsCj4gKwkJCQkJICAgcmluZy0+c2l6ZSk7Cj4gICAJCWlmIChz cGFjZSA+PSBieXRlcykKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiBAQCAtMjI3OCw5ICsyMjc4LDkg QEAgc3RhdGljIGludCB3YWl0X2Zvcl9zcGFjZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwgaW50IGJ5dGVzKQo+Cj4gICBpbnQgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51bV9kd29yZHMpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiAtCWludCByZW1haW5fYWN0 dWFsID0gcmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4gLQlpbnQgcmVtYWluX3VzYWJs ZSA9IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplIC0gcmluZ2J1Zi0+dGFpbDsKPiArCXN0cnVjdCBp bnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICsJaW50IHJlbWFpbl9hY3R1YWwg PSByaW5nLT5zaXplIC0gcmluZy0+dGFpbDsKPiArCWludCByZW1haW5fdXNhYmxlID0gcmluZy0+ ZWZmZWN0aXZlX3NpemUgLSByaW5nLT50YWlsOwo+ICAgCWludCBieXRlcyA9IG51bV9kd29yZHMg KiBzaXplb2YodTMyKTsKPiAgIAlpbnQgdG90YWxfYnl0ZXMsIHdhaXRfYnl0ZXM7Cj4gICAJYm9v bCBuZWVkX3dyYXAgPSBmYWxzZTsKPiBAQCAtMjMwNywzNSArMjMwNywzNSBAQCBpbnQgaW50ZWxf cmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG51bV9kd29y ZHMpCj4gICAJCXdhaXRfYnl0ZXMgPSB0b3RhbF9ieXRlczsKPiAgIAl9Cj4KPiAtCWlmICh3YWl0 X2J5dGVzID4gcmluZ2J1Zi0+c3BhY2UpIHsKPiArCWlmICh3YWl0X2J5dGVzID4gcmluZy0+c3Bh Y2UpIHsKPiAgIAkJaW50IHJldCA9IHdhaXRfZm9yX3NwYWNlKHJlcSwgd2FpdF9ieXRlcyk7Cj4g ICAJCWlmICh1bmxpa2VseShyZXQpKQo+ICAgCQkJcmV0dXJuIHJldDsKPgo+IC0JCWludGVsX3Jp bmdfdXBkYXRlX3NwYWNlKHJpbmdidWYpOwo+IC0JCWlmICh1bmxpa2VseShyaW5nYnVmLT5zcGFj ZSA8IHdhaXRfYnl0ZXMpKQo+ICsJCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwo+ICsJ CWlmICh1bmxpa2VseShyaW5nLT5zcGFjZSA8IHdhaXRfYnl0ZXMpKQo+ICAgCQkJcmV0dXJuIC1F QUdBSU47Cj4gICAJfQo+Cj4gICAJaWYgKHVubGlrZWx5KG5lZWRfd3JhcCkpIHsKPiAtCQlHRU1f QlVHX09OKHJlbWFpbl9hY3R1YWwgPiByaW5nYnVmLT5zcGFjZSk7Cj4gLQkJR0VNX0JVR19PTihy aW5nYnVmLT50YWlsICsgcmVtYWluX2FjdHVhbCA+IHJpbmdidWYtPnNpemUpOwo+ICsJCUdFTV9C VUdfT04ocmVtYWluX2FjdHVhbCA+IHJpbmctPnNwYWNlKTsKPiArCQlHRU1fQlVHX09OKHJpbmct PnRhaWwgKyByZW1haW5fYWN0dWFsID4gcmluZy0+c2l6ZSk7Cj4KPiAgIAkJLyogRmlsbCB0aGUg dGFpbCB3aXRoIE1JX05PT1AgKi8KPiAtCQltZW1zZXQocmluZ2J1Zi0+dmFkZHIgKyByaW5nYnVm LT50YWlsLCAwLCByZW1haW5fYWN0dWFsKTsKPiAtCQlyaW5nYnVmLT50YWlsID0gMDsKPiAtCQly aW5nYnVmLT5zcGFjZSAtPSByZW1haW5fYWN0dWFsOwo+ICsJCW1lbXNldChyaW5nLT52YWRkciAr IHJpbmctPnRhaWwsIDAsIHJlbWFpbl9hY3R1YWwpOwo+ICsJCXJpbmctPnRhaWwgPSAwOwo+ICsJ CXJpbmctPnNwYWNlIC09IHJlbWFpbl9hY3R1YWw7Cj4gICAJfQo+Cj4gLQlyaW5nYnVmLT5zcGFj ZSAtPSBieXRlczsKPiAtCUdFTV9CVUdfT04ocmluZ2J1Zi0+c3BhY2UgPCAwKTsKPiArCXJpbmct PnNwYWNlIC09IGJ5dGVzOwo+ICsJR0VNX0JVR19PTihyaW5nLT5zcGFjZSA8IDApOwo+ICAgCXJl dHVybiAwOwo+ICAgfQo+Cj4gICAvKiBBbGlnbiB0aGUgcmluZyB0YWlsIHRvIGEgY2FjaGVsaW5l IGJvdW5kYXJ5ICovCj4gICBpbnQgaW50ZWxfcmluZ19jYWNoZWxpbmVfYWxpZ24oc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZl ciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n ID0gcmVxLT5yaW5nOwo+ICAgCWludCBudW1fZHdvcmRzID0KPiAgIAkgICAgICAgCShyaW5nLT50 YWlsICYgKENBQ0hFTElORV9CWVRFUyAtIDEpKSAvIHNpemVvZih1aW50MzJfdCk7Cj4gICAJaW50 IHJldDsKPiBAQCAtMjQyOSw3ICsyNDI5LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9ic2RfcmluZ193 cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIHN0YXRpYyBpbnQg Z2VuNl9ic2RfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAg IAkJCSAgICAgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ICAgewo+IC0Jc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmlu Z2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAl1aW50MzJfdCBjbWQ7Cj4gICAJaW50IHJl dDsKPgo+IEBAIC0yNDc1LDcgKzI0NzUsNyBAQCBnZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZl cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJCSAgICAgIHU2NCBvZmZz ZXQsIHUzMiBsZW4sCj4gICAJCQkgICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncykKPiAgIHsK PiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nYnVmOwo+ICsJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmc7Cj4gICAJYm9vbCBwcGd0dCA9 IFVTRVNfUFBHVFQocmVxLT5pOTE1KSAmJgo+ICAgCQkJIShkaXNwYXRjaF9mbGFncyAmIEk5MTVf RElTUEFUQ0hfU0VDVVJFKTsKPiAgIAlpbnQgcmV0Owo+IEBAIC0yNTAxLDcgKzI1MDEsNyBAQCBo c3dfcmluZ19kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAo+ICAgCQkJICAgICB1NjQgb2Zmc2V0LCB1MzIgbGVuLAo+ICAgCQkJICAgICB1bnNpZ25l ZCBkaXNwYXRjaF9mbGFncykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n ID0gcmVxLT5yaW5nYnVmOwo+ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEt PnJpbmc7Cj4gICAJaW50IHJldDsKPgo+ICAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAy KTsKPiBAQCAtMjUyNiw3ICsyNTI2LDcgQEAgZ2VuNl9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXIo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkgICAgICB1NjQgb2Zmc2V0 LCB1MzIgbGVuLAo+ICAgCQkJICAgICAgdW5zaWduZWQgZGlzcGF0Y2hfZmxhZ3MpCj4gICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZ2J1ZjsKPiArCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nID0gcmVxLT5yaW5nOwo+ICAgCWludCByZXQ7Cj4KPiAg IAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4gQEAgLTI1NDksNyArMjU0OSw3IEBA IGdlbjZfcmluZ19kaXNwYXRjaF9leGVjYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxLAo+ICAgc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCj4gICAJCQkgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ICAg ewo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcgPSByZXEtPnJpbmdidWY7Cj4gKwlz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZyA9IHJlcS0+cmluZzsKPiAgIAl1aW50MzJfdCBj bWQ7Cj4gICAJaW50IHJldDsKPgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=