From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 4/6] drm/amdkfd: Separate mqd allocation and initialization Date: Thu, 6 Jun 2019 20:13:46 +0000 Message-ID: References: <1559845507-3052-1-git-send-email-Oak.Zeng@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1559845507-3052-1-git-send-email-Oak.Zeng-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <97696CDC25E00443A569325BF6850619-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Zeng, Oak" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Zhao, Yong" , "Freehill, Chris" , "Liu, Alex" T24gMjAxOS0wNi0wNiAyOjI1IHAubS4sIFplbmcsIE9hayB3cm90ZToNCj4gSW50cm9kdWNlIGEg bmV3IG1xZCBhbGxvY2F0aW9uIGludGVyZmFjZSBhbmQgc3BsaXQgdGhlIG9yaWdpbmFsDQo+IGlu aXRfbXFkIGZ1bmN0aW9uIGludG8gdHdvIGZ1bmN0aW9uczogYWxsb2NhdGVfbXFkIGFuZCBpbml0 X21xZC4NCj4gQWxzbyByZW5hbWVkIHVuaW5pdF9tcWQgdG8gZnJlZV9tcWQuIFRoaXMgaXMgcHJl cGFyYXRpb24gd29yayB0bw0KPiBmaXggYSBjaXJjdWxhciBsb2NrIGRlcGVuZGVuY3kuDQo+DQo+ IENoYW5nZS1JZDogSTI2ZTUzZWUxYWJjZGQ2ODhhZDExZDM1YjQzM2RhNzdlM2ZhMWJlZTcNCj4g U2lnbmVkLW9mZi1ieTogT2FrIFplbmcgPE9hay5aZW5nQGFtZC5jb20+DQo+IC0tLQ0KPiAgIC4u Li9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMgIHwgMzQgKysr Ky0tLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1ZS5j ICAgICAgfCAxNiArKy0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9t YW5hZ2VyLmMgICAgICAgfCAgNCArLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9tcWRfbWFuYWdlci5oICAgICAgIHwgMTggKysrLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfY2lrLmMgICB8IDc4ICsrKysrKystLS0tLS0tLS0tLS0N Cj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdjkuYyAgICB8 IDc4ICsrKysrKystLS0tLS0tLS0tLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9r ZmRfbXFkX21hbmFnZXJfdmkuYyAgICB8IDg4ICsrKysrKysrLS0tLS0tLS0tLS0tLS0NCj4gICA3 IGZpbGVzIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxOTIgZGVsZXRpb25zKC0pDQo+DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVl X21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVf bWFuYWdlci5jDQo+IGluZGV4IDNjMDQyZWIuLjEwZDRmNGYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jDQo+ IEBAIC0zMTksMTEgKzMxOSwxMSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9ub2Nwc2NoKHN0 cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPiAgIAlpZiAocmV0dmFsKQ0KPiAgIAkJ Z290byBvdXRfZGVhbGxvY2F0ZV9ocWQ7DQo+ICAgDQo+IC0JcmV0dmFsID0gbXFkX21nci0+aW5p dF9tcWQobXFkX21nciwgJnEtPm1xZCwgJnEtPm1xZF9tZW1fb2JqLA0KPiAtCQkJCSZxLT5nYXJ0 X21xZF9hZGRyLCAmcS0+cHJvcGVydGllcyk7DQo+IC0JaWYgKHJldHZhbCkNCj4gKwlxLT5tcWRf bWVtX29iaiA9IG1xZF9tZ3ItPmFsbG9jYXRlX21xZChtcWRfbWdyLT5kZXYsICZxLT5wcm9wZXJ0 aWVzKTsNCj4gKwlpZiAoIXEtPm1xZF9tZW1fb2JqKQ0KPiAgIAkJZ290byBvdXRfZGVhbGxvY2F0 ZV9kb29yYmVsbDsNCg0KWW91IG5lZWQgdG8gc2V0IHJldHZhbCA9IC1FTk9NRU0gaGVyZS4NCg0K DQo+IC0NCj4gKwltcWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCBxLT5tcWRfbWVt X29iaiwNCj4gKwkJCQkmcS0+Z2FydF9tcWRfYWRkciwgJnEtPnByb3BlcnRpZXMpOw0KPiAgIAlp ZiAocS0+cHJvcGVydGllcy5pc19hY3RpdmUpIHsNCj4gICANCj4gICAJCWlmIChXQVJOKHEtPnBy b2Nlc3MtPm1tICE9IGN1cnJlbnQtPm1tLA0KPiBAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyBp bnQgY3JlYXRlX3F1ZXVlX25vY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0s DQo+ICAgCQkJcmV0dmFsID0gbXFkX21nci0+bG9hZF9tcWQobXFkX21nciwgcS0+bXFkLCBxLT5w aXBlLA0KPiAgIAkJCQkJcS0+cXVldWUsICZxLT5wcm9wZXJ0aWVzLCBjdXJyZW50LT5tbSk7DQo+ ICAgCQlpZiAocmV0dmFsKQ0KPiAtCQkJZ290byBvdXRfdW5pbml0X21xZDsNCj4gKwkJCWdvdG8g b3V0X2ZyZWVfbXFkOw0KPiAgIAl9DQo+ICAgDQo+ICAgCWxpc3RfYWRkKCZxLT5saXN0LCAmcXBk LT5xdWV1ZXNfbGlzdCk7DQo+IEBAIC0zNTUsOCArMzU1LDggQEAgc3RhdGljIGludCBjcmVhdGVf cXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4gICAJCQlk cW0tPnRvdGFsX3F1ZXVlX2NvdW50KTsNCj4gICAJZ290byBvdXRfdW5sb2NrOw0KPiAgIA0KPiAt b3V0X3VuaW5pdF9tcWQ6DQo+IC0JbXFkX21nci0+dW5pbml0X21xZChtcWRfbWdyLCBxLT5tcWQs IHEtPm1xZF9tZW1fb2JqKTsNCj4gK291dF9mcmVlX21xZDoNCj4gKwltcWRfbWdyLT5mcmVlX21x ZChtcWRfbWdyLCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCj4gICBvdXRfZGVhbGxvY2F0ZV9k b29yYmVsbDoNCj4gICAJZGVhbGxvY2F0ZV9kb29yYmVsbChxcGQsIHEpOw0KPiAgIG91dF9kZWFs bG9jYXRlX2hxZDoNCj4gQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgaW50IGRlc3Ryb3lfcXVl dWVfbm9jcHNjaF9sb2NrZWQoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+ICAg CWlmIChyZXR2YWwgPT0gLUVUSU1FKQ0KPiAgIAkJcXBkLT5yZXNldF93YXZlZnJvbnRzID0gdHJ1 ZTsNCj4gICANCj4gLQltcWRfbWdyLT51bmluaXRfbXFkKG1xZF9tZ3IsIHEtPm1xZCwgcS0+bXFk X21lbV9vYmopOw0KPiArCW1xZF9tZ3ItPmZyZWVfbXFkKG1xZF9tZ3IsIHEtPm1xZCwgcS0+bXFk X21lbV9vYmopOw0KPiAgIA0KPiAgIAlsaXN0X2RlbCgmcS0+bGlzdCk7DQo+ICAgCWlmIChsaXN0 X2VtcHR5KCZxcGQtPnF1ZXVlc19saXN0KSkgew0KPiBAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRp YyBpbnQgdXBkYXRlX3F1ZXVlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLCBzdHJ1 Y3QgcXVldWUgKnEpDQo+ICAgCQl9DQo+ICAgCX0NCj4gICANCj4gLQlyZXR2YWwgPSBtcWRfbWdy LT51cGRhdGVfbXFkKG1xZF9tZ3IsIHEtPm1xZCwgJnEtPnByb3BlcnRpZXMpOw0KPiArCW1xZF9t Z3ItPnVwZGF0ZV9tcWQobXFkX21nciwgcS0+bXFkLCAmcS0+cHJvcGVydGllcyk7DQoNCkkgdGhp bmsgdGhlcmUgaXMgYSBjaGFuY2Ugbm93IHRoYXQgcmV0dmFsIHdpbGwgcmVtYWluIHVuaW5pdGlh bGl6ZWQgaW4gDQp0aGlzIGZ1bmN0aW9uIChpbiB0aGUgbm9uLUhXUyBjYXNlIGlmIGEgcXVldWUg aXMgaW5hY3RpdmUpLiBZb3Ugc2hvdWxkIA0KaW5pdGlhbGl6ZWQgaXQgdG8gMCBhdCB0aGUgc3Rh cnQgb2YgdGhlIGZ1bmN0aW9uLg0KDQpDaGVjayB0aGUgb3RoZXIgZnVuY3Rpb25zIGFzIHdlbGwu IENoZWNrIGZvciBjb21waWxlciB3YXJuaW5ncy4gTW9zdCBvZiANCnRoZXNlIHR5cGVzIG9mIHBy b2JsZW1zIHNob3VsZCBiZSBjYXVnaHQgYnkgdGhlIGNvbXBpbGVyLg0KDQoNCj4gICANCj4gICAJ LyoNCj4gICAJICogY2hlY2sgYWN0aXZlIHN0YXRlIHZzLiB0aGUgcHJldmlvdXMgc3RhdGUgYW5k IG1vZGlmeQ0KPiBAQCAtMTE2MCwxMSArMTE2MCwxMSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1 ZV9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwgc3RydWN0IHF1ZXVlICpx LA0KPiAgIAkJZHFtLT5hc2ljX29wcy5pbml0X3NkbWFfdm0oZHFtLCBxLCBxcGQpOw0KPiAgIAlx LT5wcm9wZXJ0aWVzLnRiYV9hZGRyID0gcXBkLT50YmFfYWRkcjsNCj4gICAJcS0+cHJvcGVydGll cy50bWFfYWRkciA9IHFwZC0+dG1hX2FkZHI7DQo+IC0JcmV0dmFsID0gbXFkX21nci0+aW5pdF9t cWQobXFkX21nciwgJnEtPm1xZCwgJnEtPm1xZF9tZW1fb2JqLA0KPiAtCQkJCSZxLT5nYXJ0X21x ZF9hZGRyLCAmcS0+cHJvcGVydGllcyk7DQo+IC0JaWYgKHJldHZhbCkNCj4gKwlxLT5tcWRfbWVt X29iaiA9IG1xZF9tZ3ItPmFsbG9jYXRlX21xZChtcWRfbWdyLT5kZXYsICZxLT5wcm9wZXJ0aWVz KTsNCj4gKwlpZiAoIXEtPm1xZF9tZW1fb2JqKQ0KPiAgIAkJZ290byBvdXRfZGVhbGxvY2F0ZV9k b29yYmVsbDsNCg0KcmV0dmFsID0gLUVOT01FTTsNCg0KDQo+IC0NCj4gKwltcWRfbWdyLT5pbml0 X21xZChtcWRfbWdyLCAmcS0+bXFkLCBxLT5tcWRfbWVtX29iaiwNCj4gKwkJCQkmcS0+Z2FydF9t cWRfYWRkciwgJnEtPnByb3BlcnRpZXMpOw0KPiAgIAlkcW1fbG9jayhkcW0pOw0KPiAgIA0KPiAg IAlsaXN0X2FkZCgmcS0+bGlzdCwgJnFwZC0+cXVldWVzX2xpc3QpOw0KPiBAQCAtMTM3Myw4ICsx MzczLDggQEAgc3RhdGljIGludCBkZXN0cm95X3F1ZXVlX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtLA0KPiAgIA0KPiAgIAlkcW1fdW5sb2NrKGRxbSk7DQo+ICAgDQo+IC0J LyogRG8gdW5pbml0X21xZCBhZnRlciBkcW1fdW5sb2NrKGRxbSkgdG8gYXZvaWQgY2lyY3VsYXIg bG9ja2luZyAqLw0KPiAtCW1xZF9tZ3ItPnVuaW5pdF9tcWQobXFkX21nciwgcS0+bXFkLCBxLT5t cWRfbWVtX29iaik7DQo+ICsJLyogRG8gZnJlZV9tcWQgYWZ0ZXIgZHFtX3VubG9jayhkcW0pIHRv IGF2b2lkIGNpcmN1bGFyIGxvY2tpbmcgKi8NCj4gKwltcWRfbWdyLT5mcmVlX21xZChtcWRfbWdy LCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCj4gICANCj4gICAJcmV0dXJuIHJldHZhbDsNCj4g ICANCj4gQEAgLTE2MTUsMTQgKzE2MTUsMTQgQEAgc3RhdGljIGludCBwcm9jZXNzX3Rlcm1pbmF0 aW9uX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPiAgIAkJa2ZkX2Rl Y19jb21wdXRlX2FjdGl2ZShkcW0tPmRldik7DQo+ICAgDQo+ICAgCS8qIExhc3RseSwgZnJlZSBt cWQgcmVzb3VyY2VzLg0KPiAtCSAqIERvIHVuaW5pdF9tcWQoKSBhZnRlciBkcW1fdW5sb2NrIHRv IGF2b2lkIGNpcmN1bGFyIGxvY2tpbmcuDQo+ICsJICogRG8gZnJlZV9tcWQoKSBhZnRlciBkcW1f dW5sb2NrIHRvIGF2b2lkIGNpcmN1bGFyIGxvY2tpbmcuDQo+ICAgCSAqLw0KPiAgIAlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUocSwgbmV4dCwgJnFwZC0+cXVldWVzX2xpc3QsIGxpc3QpIHsNCj4g ICAJCW1xZF9tZ3IgPSBkcW0tPm1xZF9tZ3JzW2dldF9tcWRfdHlwZV9mcm9tX3F1ZXVlX3R5cGUo DQo+ICAgCQkJCXEtPnByb3BlcnRpZXMudHlwZSldOw0KPiAgIAkJbGlzdF9kZWwoJnEtPmxpc3Qp Ow0KPiAgIAkJcXBkLT5xdWV1ZV9jb3VudC0tOw0KPiAtCQltcWRfbWdyLT51bmluaXRfbXFkKG1x ZF9tZ3IsIHEtPm1xZCwgcS0+bXFkX21lbV9vYmopOw0KPiArCQltcWRfbWdyLT5mcmVlX21xZCht cWRfbWdyLCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCj4gICAJfQ0KPiAgIA0KPiAgIAlyZXR1 cm4gcmV0dmFsOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X2tlcm5lbF9xdWV1ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9x dWV1ZS5jDQo+IGluZGV4IDFjYzAzYjMuLjIyOTUwMGMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9rZXJuZWxfcXVldWUuYw0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMNCj4gQEAgLTEzMiwxMyArMTMyLDE0 IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemUoc3RydWN0IGtlcm5lbF9xdWV1ZSAqa3EsIHN0cnVj dCBrZmRfZGV2ICpkZXYsDQo+ICAgCWtxLT5xdWV1ZS0+ZGV2aWNlID0gZGV2Ow0KPiAgIAlrcS0+ cXVldWUtPnByb2Nlc3MgPSBrZmRfZ2V0X3Byb2Nlc3MoY3VycmVudCk7DQo+ICAgDQo+IC0JcmV0 dmFsID0ga3EtPm1xZF9tZ3ItPmluaXRfbXFkKGtxLT5tcWRfbWdyLCAma3EtPnF1ZXVlLT5tcWQs DQo+IC0JCQkJCSZrcS0+cXVldWUtPm1xZF9tZW1fb2JqLA0KPiArCWtxLT5xdWV1ZS0+bXFkX21l bV9vYmogPSBrcS0+bXFkX21nci0+YWxsb2NhdGVfbXFkKGtxLT5tcWRfbWdyLT5kZXYsDQo+ICsJ CQkJCSZrcS0+cXVldWUtPnByb3BlcnRpZXMpOw0KPiArCWlmICgha3EtPnF1ZXVlLT5tcWRfbWVt X29iaikNCj4gKwkJZ290byBlcnJfYWxsb2NhdGVfbXFkOw0KDQpyZXR2YWwgPSAtRU5PTUVNOw0K DQpSZWdhcmRzLA0KIMKgIEZlbGl4DQoNCg0KPiArCWtxLT5tcWRfbWdyLT5pbml0X21xZChrcS0+ bXFkX21nciwgJmtxLT5xdWV1ZS0+bXFkLA0KPiArCQkJCQlrcS0+cXVldWUtPm1xZF9tZW1fb2Jq LA0KPiAgIAkJCQkJJmtxLT5xdWV1ZS0+Z2FydF9tcWRfYWRkciwNCj4gICAJCQkJCSZrcS0+cXVl dWUtPnByb3BlcnRpZXMpOw0KPiAtCWlmIChyZXR2YWwgIT0gMCkNCj4gLQkJZ290byBlcnJfaW5p dF9tcWQ7DQo+IC0NCj4gICAJLyogYXNzaWduIEhJUSB0byBIUUQgKi8NCj4gICAJaWYgKHR5cGUg PT0gS0ZEX1FVRVVFX1RZUEVfSElRKSB7DQo+ICAgCQlwcl9kZWJ1ZygiQXNzaWduaW5nIGhpcSB0 byBocWRcbiIpOw0KPiBAQCAtMTY0LDcgKzE2NSw4IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemUo c3RydWN0IGtlcm5lbF9xdWV1ZSAqa3EsIHN0cnVjdCBrZmRfZGV2ICpkZXYsDQo+ICAgDQo+ICAg CXJldHVybiB0cnVlOw0KPiAgIGVycl9hbGxvY19mZW5jZToNCj4gLWVycl9pbml0X21xZDoNCj4g KwlrcS0+bXFkX21nci0+ZnJlZV9tcWQoa3EtPm1xZF9tZ3IsIGtxLT5xdWV1ZS0+bXFkLCBrcS0+ cXVldWUtPm1xZF9tZW1fb2JqKTsNCj4gK2Vycl9hbGxvY2F0ZV9tcWQ6DQo+ICAgCXVuaW5pdF9x dWV1ZShrcS0+cXVldWUpOw0KPiAgIGVycl9pbml0X3F1ZXVlOg0KPiAgIAlrZmRfZ3R0X3NhX2Zy ZWUoZGV2LCBrcS0+d3B0cl9tZW0pOw0KPiBAQCAtMTkzLDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lk IHVuaW5pdGlhbGl6ZShzdHJ1Y3Qga2VybmVsX3F1ZXVlICprcSkNCj4gICAJZWxzZSBpZiAoa3Et PnF1ZXVlLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfRElRKQ0KPiAgIAkJa2Zk X2d0dF9zYV9mcmVlKGtxLT5kZXYsIGtxLT5mZW5jZV9tZW1fb2JqKTsNCj4gICANCj4gLQlrcS0+ bXFkX21nci0+dW5pbml0X21xZChrcS0+bXFkX21nciwga3EtPnF1ZXVlLT5tcWQsDQo+ICsJa3Et Pm1xZF9tZ3ItPmZyZWVfbXFkKGtxLT5tcWRfbWdyLCBrcS0+cXVldWUtPm1xZCwNCj4gICAJCQkJ a3EtPnF1ZXVlLT5tcWRfbWVtX29iaik7DQo+ICAgDQo+ICAgCWtmZF9ndHRfc2FfZnJlZShrcS0+ ZGV2LCBrcS0+cnB0cl9tZW0pOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf bXFkX21hbmFnZXIuYw0KPiBpbmRleCBjYzA0YjM2Mi4uZDZjZjM5MSAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMNCj4gQEAgLTQ1LDcgKzQ1 LDcgQEAgaW50IHBpcGVfcHJpb3JpdHlfbWFwW10gPSB7DQo+ICAgCUtGRF9QSVBFX1BSSU9SSVRZ X0NTX0hJR0gNCj4gICB9Ow0KPiAgIA0KPiAtc3RydWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9o aXFfbXFkKHN0cnVjdCBrZmRfZGV2ICpkZXYpDQo+ICtzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9j YXRlX2hpcV9tcWQoc3RydWN0IGtmZF9kZXYgKmRldiwgc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMg KnEpDQo+ICAgew0KPiAgIAlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqID0gTlVMTDsN Cj4gICANCj4gQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9z ZG1hX21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2LA0KPiAgIAlyZXR1cm4gbXFkX21lbV9vYmo7DQo+ ICAgfQ0KPiAgIA0KPiAtdm9pZCB1bmluaXRfbXFkX2hpcV9zZG1hKHN0cnVjdCBtcWRfbWFuYWdl ciAqbW0sIHZvaWQgKm1xZCwNCj4gK3ZvaWQgZnJlZV9tcWRfaGlxX3NkbWEoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21l bV9vYmopDQo+ICAgew0KPiAgIAlXQVJOX09OKCFtcWRfbWVtX29iai0+Z3R0X21lbSk7DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5oDQo+IGluZGV4IDY2 YjhjNjcuLjU1MGI2MWUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2Zk L2tmZF9tcWRfbWFuYWdlci5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9tcWRfbWFuYWdlci5oDQo+IEBAIC0zOSw3ICszOSw3IEBADQo+ICAgICogQGRlc3Ryb3lfbXFk OiBEZXN0cm95cyB0aGUgSFFEIHNsb3QgYW5kIGJ5IHRoYXQgcHJlZW1wdCB0aGUgcmVsZXZhbnQg cXVldWUuDQo+ICAgICogVXNlZCBvbmx5IGZvciBubyBjcCBzY2hlZHVsaW5nLg0KPiAgICAqDQo+ IC0gKiBAdW5pbml0X21xZDogUmVsZWFzZXMgdGhlIG1xZCBidWZmZXIgZnJvbSBsb2NhbCBncHUg bWVtb3J5Lg0KPiArICogQGZyZWVfbXFkOiBSZWxlYXNlcyB0aGUgbXFkIGJ1ZmZlciBmcm9tIGxv Y2FsIGdwdSBtZW1vcnkuDQo+ICAgICoNCj4gICAgKiBAaXNfb2NjdXBpZWQ6IENoZWNrcyBpZiB0 aGUgcmVsZXZhbnQgSFFEIHNsb3QgaXMgb2NjdXBpZWQuDQo+ICAgICoNCj4gQEAgLTY0LDggKzY0 LDExIEBADQo+ICAgICovDQo+ICAgZXh0ZXJuIGludCBwaXBlX3ByaW9yaXR5X21hcFtdOw0KPiAg IHN0cnVjdCBtcWRfbWFuYWdlciB7DQo+IC0JaW50CSgqaW5pdF9tcWQpKHN0cnVjdCBtcWRfbWFu YWdlciAqbW0sIHZvaWQgKiptcWQsDQo+IC0JCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVt X29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwNCj4gKwlzdHJ1Y3Qga2ZkX21lbV9vYmoqCSgqYWxs b2NhdGVfbXFkKShzdHJ1Y3Qga2ZkX2RldiAqa2ZkLA0KPiArCQlzdHJ1Y3QgcXVldWVfcHJvcGVy dGllcyAqcSk7DQo+ICsNCj4gKwl2b2lkCSgqaW5pdF9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAq bW0sIHZvaWQgKiptcWQsDQo+ICsJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqLCB1 aW50NjRfdCAqZ2FydF9hZGRyLA0KPiAgIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKTsN Cj4gICANCj4gICAJaW50CSgqbG9hZF9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQg Km1xZCwNCj4gQEAgLTczLDcgKzc2LDcgQEAgc3RydWN0IG1xZF9tYW5hZ2VyIHsNCj4gICAJCQkJ c3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnAsDQo+ICAgCQkJCXN0cnVjdCBtbV9zdHJ1Y3QgKm1t cyk7DQo+ICAgDQo+IC0JaW50CSgqdXBkYXRlX21xZCkoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwg dm9pZCAqbXFkLA0KPiArCXZvaWQJKCp1cGRhdGVfbXFkKShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1t LCB2b2lkICptcWQsDQo+ICAgCQkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKTsNCj4gICAN Cj4gICAJaW50CSgqZGVzdHJveV9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1x ZCwNCj4gQEAgLTgxLDcgKzg0LDcgQEAgc3RydWN0IG1xZF9tYW5hZ2VyIHsNCj4gICAJCQkJdW5z aWduZWQgaW50IHRpbWVvdXQsIHVpbnQzMl90IHBpcGVfaWQsDQo+ICAgCQkJCXVpbnQzMl90IHF1 ZXVlX2lkKTsNCj4gICANCj4gLQl2b2lkCSgqdW5pbml0X21xZCkoc3RydWN0IG1xZF9tYW5hZ2Vy ICptbSwgdm9pZCAqbXFkLA0KPiArCXZvaWQJKCpmcmVlX21xZCkoc3RydWN0IG1xZF9tYW5hZ2Vy ICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2Jq KTsNCj4gICANCj4gICAJYm9vbAkoKmlzX29jY3VwaWVkKShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1t LCB2b2lkICptcWQsDQo+IEBAIC0xMDIsMTEgKzEwNSwxMiBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIg ew0KPiAgIAl1aW50MzJfdCBtcWRfc2l6ZTsNCj4gICB9Ow0KPiAgIA0KPiAtc3RydWN0IGtmZF9t ZW1fb2JqICphbGxvY2F0ZV9oaXFfbXFkKHN0cnVjdCBrZmRfZGV2ICpkZXYpOw0KPiArc3RydWN0 IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9oaXFfbXFkKHN0cnVjdCBrZmRfZGV2ICpkZXYsDQo+ICsJ CQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpOw0KPiAgIA0KPiAgIHN0cnVjdCBrZmRfbWVt X29iaiAqYWxsb2NhdGVfc2RtYV9tcWQoc3RydWN0IGtmZF9kZXYgKmRldiwNCj4gICAJCQkJCXN0 cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKTsNCj4gLXZvaWQgdW5pbml0X21xZF9oaXFfc2RtYShz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICt2b2lkIGZyZWVfbXFkX2hpcV9z ZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCQkJc3RydWN0IGtm ZF9tZW1fb2JqICptcWRfbWVtX29iaik7DQo+ICAgDQo+ICAgdm9pZCBtcWRfc3ltbWV0cmljYWxs eV9tYXBfY3VfbWFzayhzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jDQo+IGluZGV4IGU5MTE0Mzgu LjI4ODc2YWMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9t cWRfbWFuYWdlcl9jaWsuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf bXFkX21hbmFnZXJfY2lrLmMNCj4gQEAgLTc3LDkgKzc3LDYgQEAgc3RhdGljIHN0cnVjdCBrZmRf bWVtX29iaiAqYWxsb2NhdGVfbXFkKHN0cnVjdCBrZmRfZGV2ICprZmQsDQo+ICAgew0KPiAgIAlz dHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqOw0KPiAgIA0KPiAtCWlmIChxLT50eXBlID09 IEtGRF9RVUVVRV9UWVBFX0hJUSkNCj4gLQkJcmV0dXJuIGFsbG9jYXRlX2hpcV9tcWQoa2ZkKTsN Cj4gLQ0KPiAgIAlpZiAoa2ZkX2d0dF9zYV9hbGxvY2F0ZShrZmQsIHNpemVvZihzdHJ1Y3QgY2lr X21xZCksDQo+ICAgCQkJJm1xZF9tZW1fb2JqKSkNCj4gICAJCXJldHVybiBOVUxMOw0KPiBAQCAt ODcsMjEgKzg0LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX21xZChz dHJ1Y3Qga2ZkX2RldiAqa2ZkLA0KPiAgIAlyZXR1cm4gbXFkX21lbV9vYmo7DQo+ICAgfQ0KPiAg IA0KPiAtc3RhdGljIGludCBpbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoq bXFkLA0KPiAtCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdh cnRfYWRkciwNCj4gK3N0YXRpYyB2b2lkIGluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0s IHZvaWQgKiptcWQsDQo+ICsJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVpbnQ2 NF90ICpnYXJ0X2FkZHIsDQo+ICAgCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCj4gICB7 DQo+ICAgCXVpbnQ2NF90IGFkZHI7DQo+ICAgCXN0cnVjdCBjaWtfbXFkICptOw0KPiAtCWludCBy ZXR2YWw7DQo+IC0Jc3RydWN0IGtmZF9kZXYgKmtmZCA9IG1tLT5kZXY7DQo+IC0NCj4gLQkqbXFk X21lbV9vYmogPSBhbGxvY2F0ZV9tcWQoa2ZkLCBxKTsNCj4gLQlpZiAoISptcWRfbWVtX29iaikN Cj4gLQkJcmV0dXJuIC1FTk9NRU07DQo+ICAgDQo+IC0JbSA9IChzdHJ1Y3QgY2lrX21xZCAqKSAo Km1xZF9tZW1fb2JqKS0+Y3B1X3B0cjsNCj4gLQlhZGRyID0gKCptcWRfbWVtX29iaiktPmdwdV9h ZGRyOw0KPiArCW0gPSAoc3RydWN0IGNpa19tcWQgKikgbXFkX21lbV9vYmotPmNwdV9wdHI7DQo+ ICsJYWRkciA9IG1xZF9tZW1fb2JqLT5ncHVfYWRkcjsNCj4gICANCj4gICAJbWVtc2V0KG0sIDAs IEFMSUdOKHNpemVvZihzdHJ1Y3QgY2lrX21xZCksIDI1NikpOw0KPiAgIA0KPiBAQCAtMTQ0LDM3 ICsxMzUsMjcgQEAgc3RhdGljIGludCBpbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2 b2lkICoqbXFkLA0KPiAgIAkqbXFkID0gbTsNCj4gICAJaWYgKGdhcnRfYWRkcikNCj4gICAJCSpn YXJ0X2FkZHIgPSBhZGRyOw0KPiAtCXJldHZhbCA9IG1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsN Cj4gLQ0KPiAtCXJldHVybiByZXR2YWw7DQo+ICsJbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEpOw0K PiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgaW5pdF9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFn ZXIgKm1tLCB2b2lkICoqbXFkLA0KPiAtCQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9v YmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICtzdGF0aWMgdm9pZCBpbml0X21xZF9zZG1hKHN0 cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKiptcWQsDQo+ICsJCQlzdHJ1Y3Qga2ZkX21lbV9v YmogKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiAgIAkJCXN0cnVjdCBxdWV1 ZV9wcm9wZXJ0aWVzICpxKQ0KPiAgIHsNCj4gLQlpbnQgcmV0dmFsOw0KPiAgIAlzdHJ1Y3QgY2lr X3NkbWFfcmxjX3JlZ2lzdGVycyAqbTsNCj4gLQlzdHJ1Y3Qga2ZkX2RldiAqZGV2ID0gbW0tPmRl djsNCj4gICANCj4gLQkqbXFkX21lbV9vYmogPSBhbGxvY2F0ZV9zZG1hX21xZChkZXYsIHEpOw0K PiAtCWlmICghKm1xZF9tZW1fb2JqKQ0KPiAtCQlyZXR1cm4gLUVOT01FTTsNCj4gLQ0KPiAtCW0g PSAoc3RydWN0IGNpa19zZG1hX3JsY19yZWdpc3RlcnMgKikgKCptcWRfbWVtX29iaiktPmNwdV9w dHI7DQo+ICsJbSA9IChzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqKSBtcWRfbWVtX29i ai0+Y3B1X3B0cjsNCj4gICANCj4gICAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3QgY2lrX3Nk bWFfcmxjX3JlZ2lzdGVycykpOw0KPiAgIA0KPiAgIAkqbXFkID0gbTsNCj4gICAJaWYgKGdhcnRf YWRkcikNCj4gLQkJKmdhcnRfYWRkciA9ICgqbXFkX21lbV9vYmopLT5ncHVfYWRkcjsNCj4gLQ0K PiAtCXJldHZhbCA9IG1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCj4gKwkJKmdhcnRfYWRkciA9 IG1xZF9tZW1fb2JqLT5ncHVfYWRkcjsNCj4gICANCj4gLQlyZXR1cm4gcmV0dmFsOw0KPiArCW1t LT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCB1bmlu aXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lk IGZyZWVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCQlzdHJ1 Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqKQ0KPiAgIHsNCj4gICAJa2ZkX2d0dF9zYV9mcmVl KG1tLT5kZXYsIG1xZF9tZW1fb2JqKTsNCj4gQEAgLTIwMyw3ICsxODQsNyBAQCBzdGF0aWMgaW50 IGxvYWRfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJ CQkJICAgICAgIG1tcyk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBfX3VwZGF0ZV9tcWQo c3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiArc3RhdGljIHZvaWQgX191cGRh dGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCQlzdHJ1Y3Qg cXVldWVfcHJvcGVydGllcyAqcSwgdW5zaWduZWQgaW50IGF0Y19iaXQpDQo+ICAgew0KPiAgIAlz dHJ1Y3QgY2lrX21xZCAqbTsNCj4gQEAgLTIzNywyMyArMjE4LDIxIEBAIHN0YXRpYyBpbnQgX191 cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJc2V0X3By aW9yaXR5KG0sIHEpOw0KPiAgIA0KPiAgIAlxLT5pc19hY3RpdmUgPSBRVUVVRV9JU19BQ1RJVkUo KnEpOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCB1cGRh dGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lk IHVwZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJCXN0 cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KPiAgIHsNCj4gLQlyZXR1cm4gX191cGRhdGVfbXFk KG1tLCBtcWQsIHEsIDEpOw0KPiArCV9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCAxKTsNCj4gICB9 DQo+ICAgDQo+IC1zdGF0aWMgaW50IHVwZGF0ZV9tcWRfaGF3YWlpKHN0cnVjdCBtcWRfbWFuYWdl ciAqbW0sIHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9tcWRfaGF3YWlpKHN0cnVj dCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVy dGllcyAqcSkNCj4gICB7DQo+IC0JcmV0dXJuIF9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCAwKTsN Cj4gKwlfX3VwZGF0ZV9tcWQobW0sIG1xZCwgcSwgMCk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGlj IGludCB1cGRhdGVfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0K PiArc3RhdGljIHZvaWQgdXBkYXRlX21xZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZv aWQgKm1xZCwNCj4gICAJCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpDQo+ICAgew0KPiAg IAlzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqbTsNCj4gQEAgLTI3OCw4ICsyNTcsNiBA QCBzdGF0aWMgaW50IHVwZGF0ZV9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lk ICptcWQsDQo+ICAgCW0tPnNkbWFfcXVldWVfaWQgPSBxLT5zZG1hX3F1ZXVlX2lkOw0KPiAgIA0K PiAgIAlxLT5pc19hY3RpdmUgPSBRVUVVRV9JU19BQ1RJVkUoKnEpOw0KPiAtDQo+IC0JcmV0dXJu IDA7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgZGVzdHJveV9tcWQoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiBAQCAtMzI2LDE0ICszMDMsMTQgQEAgc3RhdGljIGJv b2wgaXNfb2NjdXBpZWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ ICAgICogcXVldWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBpbml0aWFsIHZhbHVlcy4NCj4gICAgKi8N Cj4gICANCj4gLXN0YXRpYyBpbnQgaW5pdF9tcWRfaGlxKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0s IHZvaWQgKiptcWQsDQo+IC0JCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50 NjRfdCAqZ2FydF9hZGRyLA0KPiArc3RhdGljIHZvaWQgaW5pdF9tcWRfaGlxKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKiptcWQsDQo+ICsJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21l bV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICAgCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGll cyAqcSkNCj4gICB7DQo+IC0JcmV0dXJuIGluaXRfbXFkKG1tLCBtcWQsIG1xZF9tZW1fb2JqLCBn YXJ0X2FkZHIsIHEpOw0KPiArCWluaXRfbXFkKG1tLCBtcWQsIG1xZF9tZW1fb2JqLCBnYXJ0X2Fk ZHIsIHEpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgdXBkYXRlX21xZF9oaXEoc3RydWN0 IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiArc3RhdGljIHZvaWQgdXBkYXRlX21xZF9o aXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJCQlzdHJ1Y3QgcXVl dWVfcHJvcGVydGllcyAqcSkNCj4gICB7DQo+ICAgCXN0cnVjdCBjaWtfbXFkICptOw0KPiBAQCAt MzYwLDcgKzMzNyw2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5h Z2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAlxLT5pc19hY3RpdmUgPSBRVUVVRV9JU19BQ1RJVkUo KnEpOw0KPiAgIA0KPiAgIAlzZXRfcHJpb3JpdHkobSwgcSk7DQo+IC0JcmV0dXJuIDA7DQo+ICAg fQ0KPiAgIA0KPiAgICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykNCj4gQEAgLTM5OSw4ICsz NzUsOSBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfY2lrKGVudW0gS0ZE X01RRF9UWVBFIHR5cGUsDQo+ICAgCXN3aXRjaCAodHlwZSkgew0KPiAgIAljYXNlIEtGRF9NUURf VFlQRV9DUDoNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfQ09NUFVURToNCj4gKwkJbXFkLT5hbGxv Y2F0ZV9tcWQgPSBhbGxvY2F0ZV9tcWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWQ7 DQo+IC0JCW1xZC0+dW5pbml0X21xZCA9IHVuaW5pdF9tcWQ7DQo+ICsJCW1xZC0+ZnJlZV9tcWQg PSBmcmVlX21xZDsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsNCj4gICAJCW1xZC0+ dXBkYXRlX21xZCA9IHVwZGF0ZV9tcWQ7DQo+ICAgCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJv eV9tcWQ7DQo+IEBAIC00MTEsOCArMzg4LDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWFu YWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KPiAgICNlbmRpZg0KPiAgIAkJ YnJlYWs7DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBFX0hJUToNCj4gKwkJbXFkLT5hbGxvY2F0ZV9t cWQgPSBhbGxvY2F0ZV9oaXFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkX2hp cTsNCj4gLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZF9oaXFfc2RtYTsNCj4gKwkJbXFk LT5mcmVlX21xZCA9IGZyZWVfbXFkX2hpcV9zZG1hOw0KPiAgIAkJbXFkLT5sb2FkX21xZCA9IGxv YWRfbXFkOw0KPiAgIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21xZF9oaXE7DQo+ICAgCQlt cWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQo+IEBAIC00MjMsOCArNDAxLDkgQEAgc3Ry dWN0IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURfVFlQRSB0 eXBlLA0KPiAgICNlbmRpZg0KPiAgIAkJYnJlYWs7DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBFX0RJ UToNCj4gKwkJbXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0ZV9oaXFfbXFkOw0KPiAgIAkJbXFk LT5pbml0X21xZCA9IGluaXRfbXFkX2hpcTsNCj4gLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0 X21xZDsNCj4gKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkOw0KPiAgIAkJbXFkLT5sb2FkX21x ZCA9IGxvYWRfbXFkOw0KPiAgIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21xZF9oaXE7DQo+ ICAgCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQo+IEBAIC00MzUsOCArNDE0LDkg QEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2NpayhlbnVtIEtGRF9NUURf VFlQRSB0eXBlLA0KPiAgICNlbmRpZg0KPiAgIAkJYnJlYWs7DQo+ICAgCWNhc2UgS0ZEX01RRF9U WVBFX1NETUE6DQo+ICsJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfc2RtYV9tcWQ7DQo+ ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWRfc2RtYTsNCj4gLQkJbXFkLT51bmluaXRfbXFk ID0gdW5pbml0X21xZF9oaXFfc2RtYTsNCj4gKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hp cV9zZG1hOw0KPiAgIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkX3NkbWE7DQo+ICAgCQltcWQt PnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkX3NkbWE7DQo+ICAgCQltcWQtPmRlc3Ryb3lfbXFkID0g ZGVzdHJveV9tcWRfc2RtYTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k a2ZkL2tmZF9tcWRfbWFuYWdlcl92OS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X21xZF9tYW5hZ2VyX3Y5LmMNCj4gaW5kZXggODE4OTQ0Yi4uMGM1OGY5MSAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3Y5LmMNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3Y5LmMNCj4gQEAg LTc5LDkgKzc5LDYgQEAgc3RhdGljIHN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2NhdGVfbXFkKHN0 cnVjdCBrZmRfZGV2ICprZmQsDQo+ICAgCWludCByZXR2YWw7DQo+ICAgCXN0cnVjdCBrZmRfbWVt X29iaiAqbXFkX21lbV9vYmogPSBOVUxMOw0KPiAgIA0KPiAtCWlmIChxLT50eXBlID09IEtGRF9R VUVVRV9UWVBFX0hJUSkNCj4gLQkJcmV0dXJuIGFsbG9jYXRlX2hpcV9tcWQoa2ZkKTsNCj4gLQ0K PiAgIAkvKiBGcm9tIFY5LCAgZm9yIENXU1IsIHRoZSBjb250cm9sIHN0YWNrIGlzIGxvY2F0ZWQg b24gdGhlIG5leHQgcGFnZQ0KPiAgIAkgKiBib3VuZGFyeSBhZnRlciB0aGUgbXFkLCB3ZSB3aWxs IHVzZSB0aGUgZ3R0IGFsbG9jYXRpb24gZnVuY3Rpb24NCj4gICAJICogaW5zdGVhZCBvZiBzdWIt YWxsb2NhdGlvbiBmdW5jdGlvbi4NCj4gQEAgLTExMCwyMSArMTA3LDE1IEBAIHN0YXRpYyBzdHJ1 Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX21xZChzdHJ1Y3Qga2ZkX2RldiAqa2ZkLA0KPiAgIA0K PiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICpt bSwgdm9pZCAqKm1xZCwNCj4gLQkJCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1 aW50NjRfdCAqZ2FydF9hZGRyLA0KPiArc3RhdGljIHZvaWQgaW5pdF9tcWQoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqKm1xZCwNCj4gKwkJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21l bV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICAgCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRp ZXMgKnEpDQo+ICAgew0KPiAtCWludCByZXR2YWw7DQo+ICAgCXVpbnQ2NF90IGFkZHI7DQo+ICAg CXN0cnVjdCB2OV9tcWQgKm07DQo+IC0Jc3RydWN0IGtmZF9kZXYgKmtmZCA9IG1tLT5kZXY7DQo+ IC0NCj4gLQkqbXFkX21lbV9vYmogPSBhbGxvY2F0ZV9tcWQoa2ZkLCBxKTsNCj4gLQlpZiAoISpt cWRfbWVtX29iaikNCj4gLQkJcmV0dXJuIC1FTk9NRU07DQo+ICAgDQo+IC0JbSA9IChzdHJ1Y3Qg djlfbXFkICopICgqbXFkX21lbV9vYmopLT5jcHVfcHRyOw0KPiAtCWFkZHIgPSAoKm1xZF9tZW1f b2JqKS0+Z3B1X2FkZHI7DQo+ICsJbSA9IChzdHJ1Y3QgdjlfbXFkICopIG1xZF9tZW1fb2JqLT5j cHVfcHRyOw0KPiArCWFkZHIgPSBtcWRfbWVtX29iai0+Z3B1X2FkZHI7DQo+ICAgDQo+ICAgCW1l bXNldChtLCAwLCBzaXplb2Yoc3RydWN0IHY5X21xZCkpOw0KPiAgIA0KPiBAQCAtMTczLDkgKzE2 NCw3IEBAIHN0YXRpYyBpbnQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq Km1xZCwNCj4gICAJKm1xZCA9IG07DQo+ICAgCWlmIChnYXJ0X2FkZHIpDQo+ICAgCQkqZ2FydF9h ZGRyID0gYWRkcjsNCj4gLQlyZXR2YWwgPSBtbS0+dXBkYXRlX21xZChtbSwgbSwgcSk7DQo+IC0N Cj4gLQlyZXR1cm4gcmV0dmFsOw0KPiArCW1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCj4gICB9 DQo+ICAgDQo+ICAgc3RhdGljIGludCBsb2FkX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2 b2lkICptcWQsDQo+IEBAIC0xOTAsNyArMTc5LDcgQEAgc3RhdGljIGludCBsb2FkX21xZChzdHJ1 Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCQkJCQkgIHdwdHJfc2hpZnQsIDAs IG1tcyk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCB1cGRhdGVfbXFkKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9tcWQoc3RydWN0 IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJICAgICAgc3RydWN0IHF1ZXVlX3By b3BlcnRpZXMgKnEpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgdjlfbXFkICptOw0KPiBAQCAtMjUyLDgg KzI0MSw2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2 b2lkICptcWQsDQo+ICAgCXNldF9wcmlvcml0eShtLCBxKTsNCj4gICANCj4gICAJcS0+aXNfYWN0 aXZlID0gUVVFVUVfSVNfQUNUSVZFKCpxKTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAgIH0NCj4g ICANCj4gICANCj4gQEAgLTI2Nyw3ICsyNTQsNyBAQCBzdGF0aWMgaW50IGRlc3Ryb3lfbXFkKHN0 cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCXBpcGVfaWQsIHF1ZXVlX2lk KTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCB1bmluaXRfbXFkKHN0cnVjdCBtcWRfbWFu YWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lkIGZyZWVfbXFkKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9t ZW1fb2JqKQ0KPiAgIHsNCj4gICAJc3RydWN0IGtmZF9kZXYgKmtmZCA9IG1tLT5kZXY7DQo+IEBA IC0zMTEsNjIgKzI5OCw0NyBAQCBzdGF0aWMgaW50IGdldF93YXZlX3N0YXRlKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiAt c3RhdGljIGludCBpbml0X21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1x ZCwNCj4gLQkJCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2Fy dF9hZGRyLA0KPiArc3RhdGljIHZvaWQgaW5pdF9tcWRfaGlxKHN0cnVjdCBtcWRfbWFuYWdlciAq bW0sIHZvaWQgKiptcWQsDQo+ICsJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqLCB1 aW50NjRfdCAqZ2FydF9hZGRyLA0KPiAgIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0K PiAgIHsNCj4gICAJc3RydWN0IHY5X21xZCAqbTsNCj4gLQlpbnQgcmV0dmFsID0gaW5pdF9tcWQo bW0sIG1xZCwgbXFkX21lbV9vYmosIGdhcnRfYWRkciwgcSk7DQo+ICAgDQo+IC0JaWYgKHJldHZh bCAhPSAwKQ0KPiAtCQlyZXR1cm4gcmV0dmFsOw0KPiArCWluaXRfbXFkKG1tLCBtcWQsIG1xZF9t ZW1fb2JqLCBnYXJ0X2FkZHIsIHEpOw0KPiAgIA0KPiAgIAltID0gZ2V0X21xZCgqbXFkKTsNCj4g ICANCj4gICAJbS0+Y3BfaHFkX3BxX2NvbnRyb2wgfD0gMSA8PCBDUF9IUURfUFFfQ09OVFJPTF9f UFJJVl9TVEFURV9fU0hJRlQgfA0KPiAgIAkJCTEgPDwgQ1BfSFFEX1BRX0NPTlRST0xfX0tNRF9R VUVVRV9fU0hJRlQ7DQo+IC0NCj4gLQlyZXR1cm4gcmV0dmFsOw0KPiAgIH0NCj4gICANCj4gLXN0 YXRpYyBpbnQgdXBkYXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFk LA0KPiArc3RhdGljIHZvaWQgdXBkYXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwg dm9pZCAqbXFkLA0KPiAgIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KPiAgIHsNCj4g ICAJc3RydWN0IHY5X21xZCAqbTsNCj4gLQlpbnQgcmV0dmFsID0gdXBkYXRlX21xZChtbSwgbXFk LCBxKTsNCj4gICANCj4gLQlpZiAocmV0dmFsICE9IDApDQo+IC0JCXJldHVybiByZXR2YWw7DQo+ ICsJdXBkYXRlX21xZChtbSwgbXFkLCBxKTsNCj4gICANCj4gICAJLyogVE9ETzogd2hhdCdzIHRo ZSBwb2ludD8gdXBkYXRlX21xZCBhbHJlYWR5IGRvZXMgdGhpcy4gKi8NCj4gICAJbSA9IGdldF9t cWQobXFkKTsNCj4gICAJbS0+Y3BfaHFkX3ZtaWQgPSBxLT52bWlkOw0KPiAtCXJldHVybiByZXR2 YWw7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBpbml0X21xZF9zZG1hKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKiptcWQsDQo+IC0JCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9t ZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiArc3RhdGljIHZvaWQgaW5pdF9tcWRfc2Rt YShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KPiArCQlzdHJ1Y3Qga2ZkX21l bV9vYmogKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KPiAgIAkJc3RydWN0IHF1 ZXVlX3Byb3BlcnRpZXMgKnEpDQo+ICAgew0KPiAtCWludCByZXR2YWw7DQo+ICAgCXN0cnVjdCB2 OV9zZG1hX21xZCAqbTsNCj4gLQlzdHJ1Y3Qga2ZkX2RldiAqZGV2ID0gbW0tPmRldjsNCj4gLQ0K PiAtCSptcWRfbWVtX29iaiA9IGFsbG9jYXRlX3NkbWFfbXFkKGRldiwgcSk7DQo+IC0JaWYgKCEq bXFkX21lbV9vYmopDQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiAgIA0KPiAtCW0gPSAoc3RydWN0 IHY5X3NkbWFfbXFkICopICgqbXFkX21lbV9vYmopLT5jcHVfcHRyOw0KPiArCW0gPSAoc3RydWN0 IHY5X3NkbWFfbXFkICopIG1xZF9tZW1fb2JqLT5jcHVfcHRyOw0KPiAgIA0KPiAgIAltZW1zZXQo bSwgMCwgc2l6ZW9mKHN0cnVjdCB2OV9zZG1hX21xZCkpOw0KPiAgIA0KPiAgIAkqbXFkID0gbTsN Cj4gICAJaWYgKGdhcnRfYWRkcikNCj4gLQkJKmdhcnRfYWRkciA9ICgqbXFkX21lbV9vYmopLT5n cHVfYWRkcjsNCj4gKwkJKmdhcnRfYWRkciA9IG1xZF9tZW1fb2JqLT5ncHVfYWRkcjsNCj4gICAN Cj4gLQlyZXR2YWwgPSBtbS0+dXBkYXRlX21xZChtbSwgbSwgcSk7DQo+IC0NCj4gLQlyZXR1cm4g cmV0dmFsOw0KPiArCW1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCj4gICB9DQo+ICAgDQo+ICAg c3RhdGljIGludCBsb2FkX21xZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1x ZCwNCj4gQEAgLTM4MCw3ICszNTIsNyBAQCBzdGF0aWMgaW50IGxvYWRfbXFkX3NkbWEoc3RydWN0 IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIA0KPiAgICNkZWZpbmUgU0RNQV9STENf RFVNTVlfREVGQVVMVCAweGYNCj4gICANCj4gLXN0YXRpYyBpbnQgdXBkYXRlX21xZF9zZG1hKHN0 cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9t cWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCQlzdHJ1Y3Qg cXVldWVfcHJvcGVydGllcyAqcSkNCj4gICB7DQo+ICAgCXN0cnVjdCB2OV9zZG1hX21xZCAqbTsN Cj4gQEAgLTQwNCw4ICszNzYsNiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9tcWRfc2RtYShzdHJ1Y3Qg bXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCW0tPnNkbWF4X3JsY3hfZHVtbXlfcmVn ID0gU0RNQV9STENfRFVNTVlfREVGQVVMVDsNCj4gICANCj4gICAJcS0+aXNfYWN0aXZlID0gUVVF VUVfSVNfQUNUSVZFKCpxKTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gICAv Kg0KPiBAQCAtNDYyLDggKzQzMiw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJf aW5pdF92OShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KPiAgIAlzd2l0Y2ggKHR5cGUpIHsNCj4g ICAJY2FzZSBLRkRfTVFEX1RZUEVfQ1A6DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBFX0NPTVBVVEU6 DQo+ICsJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfbXFkOw0KPiAgIAkJbXFkLT5pbml0 X21xZCA9IGluaXRfbXFkOw0KPiAtCQltcWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkOw0KPiAr CQltcWQtPmZyZWVfbXFkID0gZnJlZV9tcWQ7DQo+ICAgCQltcWQtPmxvYWRfbXFkID0gbG9hZF9t cWQ7DQo+ICAgCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkOw0KPiAgIAkJbXFkLT5kZXN0 cm95X21xZCA9IGRlc3Ryb3lfbXFkOw0KPiBAQCAtNDc1LDggKzQ0Niw5IEBAIHN0cnVjdCBtcWRf bWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92OShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KPiAg ICNlbmRpZg0KPiAgIAkJYnJlYWs7DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBFX0hJUToNCj4gKwkJ bXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0ZV9oaXFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21x ZCA9IGluaXRfbXFkX2hpcTsNCj4gLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZF9oaXFf c2RtYTsNCj4gKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hpcV9zZG1hOw0KPiAgIAkJbXFk LT5sb2FkX21xZCA9IGxvYWRfbXFkOw0KPiAgIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21x ZF9oaXE7DQo+ICAgCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQo+IEBAIC00ODcs OCArNDU5LDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X3Y5KGVudW0g S0ZEX01RRF9UWVBFIHR5cGUsDQo+ICAgI2VuZGlmDQo+ICAgCQlicmVhazsNCj4gICAJY2FzZSBL RkRfTVFEX1RZUEVfRElROg0KPiArCQltcWQtPmFsbG9jYXRlX21xZCA9IGFsbG9jYXRlX2hpcV9t cWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWRfaGlxOw0KPiAtCQltcWQtPnVuaW5p dF9tcWQgPSB1bmluaXRfbXFkOw0KPiArCQltcWQtPmZyZWVfbXFkID0gZnJlZV9tcWQ7DQo+ICAg CQltcWQtPmxvYWRfbXFkID0gbG9hZF9tcWQ7DQo+ICAgCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRh dGVfbXFkX2hpcTsNCj4gICAJCW1xZC0+ZGVzdHJveV9tcWQgPSBkZXN0cm95X21xZDsNCj4gQEAg LTQ5OSw4ICs0NzIsOSBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfdjko ZW51bSBLRkRfTVFEX1RZUEUgdHlwZSwNCj4gICAjZW5kaWYNCj4gICAJCWJyZWFrOw0KPiAgIAlj YXNlIEtGRF9NUURfVFlQRV9TRE1BOg0KPiArCQltcWQtPmFsbG9jYXRlX21xZCA9IGFsbG9jYXRl X3NkbWFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkX3NkbWE7DQo+IC0JCW1x ZC0+dW5pbml0X21xZCA9IHVuaW5pdF9tcWRfaGlxX3NkbWE7DQo+ICsJCW1xZC0+ZnJlZV9tcWQg PSBmcmVlX21xZF9oaXFfc2RtYTsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZF9zZG1h Ow0KPiAgIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21xZF9zZG1hOw0KPiAgIAkJbXFkLT5k ZXN0cm95X21xZCA9IGRlc3Ryb3lfbXFkX3NkbWE7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jDQo+IGluZGV4IDAwZTZhNTkuLjdkMTQ0ZjUg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdl cl92aS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdl cl92aS5jDQo+IEBAIC04MCw5ICs4MCw2IEBAIHN0YXRpYyBzdHJ1Y3Qga2ZkX21lbV9vYmogKmFs bG9jYXRlX21xZChzdHJ1Y3Qga2ZkX2RldiAqa2ZkLA0KPiAgIHsNCj4gICAJc3RydWN0IGtmZF9t ZW1fb2JqICptcWRfbWVtX29iajsNCj4gICANCj4gLQlpZiAocS0+dHlwZSA9PSBLRkRfUVVFVUVf VFlQRV9ISVEpDQo+IC0JCXJldHVybiBhbGxvY2F0ZV9oaXFfbXFkKGtmZCk7DQo+IC0NCj4gICAJ aWYgKGtmZF9ndHRfc2FfYWxsb2NhdGUoa2ZkLCBzaXplb2Yoc3RydWN0IHZpX21xZCksDQo+ICAg CQkJJm1xZF9tZW1fb2JqKSkNCj4gICAJCXJldHVybiBOVUxMOw0KPiBAQCAtOTAsMjEgKzg3LDE1 IEBAIHN0YXRpYyBzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX21xZChzdHJ1Y3Qga2ZkX2Rl diAqa2ZkLA0KPiAgIAlyZXR1cm4gbXFkX21lbV9vYmo7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGlj IGludCBpbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KPiAtCQkJ c3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ ICtzdGF0aWMgdm9pZCBpbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFk LA0KPiArCQkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRf YWRkciwNCj4gICAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCj4gICB7DQo+IC0JaW50 IHJldHZhbDsNCj4gICAJdWludDY0X3QgYWRkcjsNCj4gICAJc3RydWN0IHZpX21xZCAqbTsNCj4g LQlzdHJ1Y3Qga2ZkX2RldiAqa2ZkID0gbW0tPmRldjsNCj4gLQ0KPiAtCSptcWRfbWVtX29iaiA9 IGFsbG9jYXRlX21xZChrZmQsIHEpOw0KPiAtCWlmICghKm1xZF9tZW1fb2JqKQ0KPiAtCQlyZXR1 cm4gLUVOT01FTTsNCj4gICANCj4gLQltID0gKHN0cnVjdCB2aV9tcWQgKikgKCptcWRfbWVtX29i aiktPmNwdV9wdHI7DQo+IC0JYWRkciA9ICgqbXFkX21lbV9vYmopLT5ncHVfYWRkcjsNCj4gKwlt ID0gKHN0cnVjdCB2aV9tcWQgKikgbXFkX21lbV9vYmotPmNwdV9wdHI7DQo+ICsJYWRkciA9IG1x ZF9tZW1fb2JqLT5ncHVfYWRkcjsNCj4gICANCj4gICAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1 Y3QgdmlfbXFkKSk7DQo+ICAgDQo+IEBAIC0xNTksOSArMTUwLDcgQEAgc3RhdGljIGludCBpbml0 X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KPiAgIAkqbXFkID0gbTsN Cj4gICAJaWYgKGdhcnRfYWRkcikNCj4gICAJCSpnYXJ0X2FkZHIgPSBhZGRyOw0KPiAtCXJldHZh bCA9IG1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCj4gLQ0KPiAtCXJldHVybiByZXR2YWw7DQo+ ICsJbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEpOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgaW50 IGxvYWRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gQEAgLTE3Nyw3 ICsxNjYsNyBAQCBzdGF0aWMgaW50IGxvYWRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZv aWQgKm1xZCwNCj4gICAJCQkJCSAgd3B0cl9zaGlmdCwgd3B0cl9tYXNrLCBtbXMpOw0KPiAgIH0N Cj4gICANCj4gLXN0YXRpYyBpbnQgX191cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0s IHZvaWQgKm1xZCwNCj4gK3N0YXRpYyB2b2lkIF9fdXBkYXRlX21xZChzdHJ1Y3QgbXFkX21hbmFn ZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEsIHVu c2lnbmVkIGludCBtdHlwZSwNCj4gICAJCQl1bnNpZ25lZCBpbnQgYXRjX2JpdCkNCj4gICB7DQo+ IEBAIC0yNDUsMjEgKzIzNCwxOSBAQCBzdGF0aWMgaW50IF9fdXBkYXRlX21xZChzdHJ1Y3QgbXFk X21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCXNldF9wcmlvcml0eShtLCBxKTsNCj4gICAN Cj4gICAJcS0+aXNfYWN0aXZlID0gUVVFVUVfSVNfQUNUSVZFKCpxKTsNCj4gLQ0KPiAtCXJldHVy biAwOw0KPiAgIH0NCj4gICANCj4gICANCj4gLXN0YXRpYyBpbnQgdXBkYXRlX21xZChzdHJ1Y3Qg bXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICtzdGF0aWMgdm9pZCB1cGRhdGVfbXFkKHN0 cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCj4gICAJCQlzdHJ1Y3QgcXVldWVfcHJv cGVydGllcyAqcSkNCj4gICB7DQo+IC0JcmV0dXJuIF9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCBN VFlQRV9DQywgMSk7DQo+ICsJX191cGRhdGVfbXFkKG1tLCBtcWQsIHEsIE1UWVBFX0NDLCAxKTsN Cj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgaW50IHVwZGF0ZV9tcWRfdG9uZ2Eoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiArc3RhdGljIHZvaWQgdXBkYXRlX21xZF90b25nYShz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCQkJc3RydWN0IHF1ZXVlX3By b3BlcnRpZXMgKnEpDQo+ICAgew0KPiAtCXJldHVybiBfX3VwZGF0ZV9tcWQobW0sIG1xZCwgcSwg TVRZUEVfVUMsIDApOw0KPiArCV9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCBNVFlQRV9VQywgMCk7 DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgZGVzdHJveV9tcWQoc3RydWN0IG1xZF9tYW5h Z2VyICptbSwgdm9pZCAqbXFkLA0KPiBAQCAtMjcyLDcgKzI1OSw3IEBAIHN0YXRpYyBpbnQgZGVz dHJveV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJcGlwZV9p ZCwgcXVldWVfaWQpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIHVuaW5pdF9tcWQoc3Ry dWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiArc3RhdGljIHZvaWQgZnJlZV9tcWQo c3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJCXN0cnVjdCBrZmRfbWVt X29iaiAqbXFkX21lbV9vYmopDQo+ICAgew0KPiAgIAlrZmRfZ3R0X3NhX2ZyZWUobW0tPmRldiwg bXFkX21lbV9vYmopOw0KPiBAQCAtMzA5LDYxICsyOTYsNDQgQEAgc3RhdGljIGludCBnZXRfd2F2 ZV9zdGF0ZShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ICAgCXJldHVybiAw Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgaW5pdF9tcWRfaGlxKHN0cnVjdCBtcWRfbWFu YWdlciAqbW0sIHZvaWQgKiptcWQsDQo+IC0JCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVt X29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwNCj4gK3N0YXRpYyB2b2lkIGluaXRfbXFkX2hpcShz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KPiArCQkJc3RydWN0IGtmZF9tZW1f b2JqICptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwNCj4gICAJCQlzdHJ1Y3QgcXVl dWVfcHJvcGVydGllcyAqcSkNCj4gICB7DQo+ICAgCXN0cnVjdCB2aV9tcWQgKm07DQo+IC0JaW50 IHJldHZhbCA9IGluaXRfbXFkKG1tLCBtcWQsIG1xZF9tZW1fb2JqLCBnYXJ0X2FkZHIsIHEpOw0K PiAtDQo+IC0JaWYgKHJldHZhbCAhPSAwKQ0KPiAtCQlyZXR1cm4gcmV0dmFsOw0KPiArCWluaXRf bXFkKG1tLCBtcWQsIG1xZF9tZW1fb2JqLCBnYXJ0X2FkZHIsIHEpOw0KPiAgIA0KPiAgIAltID0g Z2V0X21xZCgqbXFkKTsNCj4gICANCj4gICAJbS0+Y3BfaHFkX3BxX2NvbnRyb2wgfD0gMSA8PCBD UF9IUURfUFFfQ09OVFJPTF9fUFJJVl9TVEFURV9fU0hJRlQgfA0KPiAgIAkJCTEgPDwgQ1BfSFFE X1BRX0NPTlRST0xfX0tNRF9RVUVVRV9fU0hJRlQ7DQo+IC0NCj4gLQlyZXR1cm4gcmV0dmFsOw0K PiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgdXBkYXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5h Z2VyICptbSwgdm9pZCAqbXFkLA0KPiArc3RhdGljIHZvaWQgdXBkYXRlX21xZF9oaXEoc3RydWN0 IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0 aWVzICpxKQ0KPiAgIHsNCj4gICAJc3RydWN0IHZpX21xZCAqbTsNCj4gLQlpbnQgcmV0dmFsID0g X191cGRhdGVfbXFkKG1tLCBtcWQsIHEsIE1UWVBFX1VDLCAwKTsNCj4gLQ0KPiAtCWlmIChyZXR2 YWwgIT0gMCkNCj4gLQkJcmV0dXJuIHJldHZhbDsNCj4gKwlfX3VwZGF0ZV9tcWQobW0sIG1xZCwg cSwgTVRZUEVfVUMsIDApOw0KPiAgIA0KPiAgIAltID0gZ2V0X21xZChtcWQpOw0KPiAgIAltLT5j cF9ocWRfdm1pZCA9IHEtPnZtaWQ7DQo+IC0JcmV0dXJuIHJldHZhbDsNCj4gICB9DQo+ICAgDQo+ IC1zdGF0aWMgaW50IGluaXRfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq Km1xZCwNCj4gLQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpn YXJ0X2FkZHIsDQo+ICtzdGF0aWMgdm9pZCBpbml0X21xZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdl ciAqbW0sIHZvaWQgKiptcWQsDQo+ICsJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmos IHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQo+ICAgCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkN Cj4gICB7DQo+IC0JaW50IHJldHZhbDsNCj4gICAJc3RydWN0IHZpX3NkbWFfbXFkICptOw0KPiAt CXN0cnVjdCBrZmRfZGV2ICpkZXYgPSBtbS0+ZGV2Ow0KPiAtDQo+IC0JKm1xZF9tZW1fb2JqID0g YWxsb2NhdGVfc2RtYV9tcWQoZGV2LCBxKTsNCj4gLQlpZiAoISptcWRfbWVtX29iaikNCj4gLQkJ cmV0dXJuIC1FTk9NRU07DQo+ICAgDQo+IC0JbSA9IChzdHJ1Y3Qgdmlfc2RtYV9tcWQgKikgKCpt cWRfbWVtX29iaiktPmNwdV9wdHI7DQo+ICsJbSA9IChzdHJ1Y3Qgdmlfc2RtYV9tcWQgKikgbXFk X21lbV9vYmotPmNwdV9wdHI7DQo+ICAgDQo+ICAgCW1lbXNldChtLCAwLCBzaXplb2Yoc3RydWN0 IHZpX3NkbWFfbXFkKSk7DQo+ICAgDQo+ICAgCSptcWQgPSBtOw0KPiAgIAlpZiAoZ2FydF9hZGRy KQ0KPiAtCQkqZ2FydF9hZGRyID0gKCptcWRfbWVtX29iaiktPmdwdV9hZGRyOw0KPiArCQkqZ2Fy dF9hZGRyID0gbXFkX21lbV9vYmotPmdwdV9hZGRyOw0KPiAgIA0KPiAtCXJldHZhbCA9IG1tLT51 cGRhdGVfbXFkKG1tLCBtLCBxKTsNCj4gLQ0KPiAtCXJldHVybiByZXR2YWw7DQo+ICsJbW0tPnVw ZGF0ZV9tcWQobW0sIG0sIHEpOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgaW50IGxvYWRfbXFk X3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiBAQCAtMzc1LDcgKzM0 NSw3IEBAIHN0YXRpYyBpbnQgbG9hZF9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2 b2lkICptcWQsDQo+ICAgCQkJCQkgICAgICAgbW1zKTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMg aW50IHVwZGF0ZV9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQo+ ICtzdGF0aWMgdm9pZCB1cGRhdGVfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9p ZCAqbXFkLA0KPiAgIAkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpDQo+ICAgew0KPiAgIAlz dHJ1Y3Qgdmlfc2RtYV9tcWQgKm07DQo+IEBAIC00MDAsOCArMzcwLDYgQEAgc3RhdGljIGludCB1 cGRhdGVfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KPiAgIAlt LT5zZG1hX3F1ZXVlX2lkID0gcS0+c2RtYV9xdWV1ZV9pZDsNCj4gICANCj4gICAJcS0+aXNfYWN0 aXZlID0gUVVFVUVfSVNfQUNUSVZFKCpxKTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAgIH0NCj4g ICANCj4gICAvKg0KPiBAQCAtNDU4LDggKzQyNiw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFk X21hbmFnZXJfaW5pdF92aShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KPiAgIAlzd2l0Y2ggKHR5 cGUpIHsNCj4gICAJY2FzZSBLRkRfTVFEX1RZUEVfQ1A6DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBF X0NPTVBVVEU6DQo+ICsJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfbXFkOw0KPiAgIAkJ bXFkLT5pbml0X21xZCA9IGluaXRfbXFkOw0KPiAtCQltcWQtPnVuaW5pdF9tcWQgPSB1bmluaXRf bXFkOw0KPiArCQltcWQtPmZyZWVfbXFkID0gZnJlZV9tcWQ7DQo+ICAgCQltcWQtPmxvYWRfbXFk ID0gbG9hZF9tcWQ7DQo+ICAgCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkOw0KPiAgIAkJ bXFkLT5kZXN0cm95X21xZCA9IGRlc3Ryb3lfbXFkOw0KPiBAQCAtNDcxLDggKzQ0MCw5IEBAIHN0 cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92aShlbnVtIEtGRF9NUURfVFlQRSB0 eXBlLA0KPiAgICNlbmRpZg0KPiAgIAkJYnJlYWs7DQo+ICAgCWNhc2UgS0ZEX01RRF9UWVBFX0hJ UToNCj4gKwkJbXFkLT5hbGxvY2F0ZV9tcWQgPSBhbGxvY2F0ZV9oaXFfbXFkOw0KPiAgIAkJbXFk LT5pbml0X21xZCA9IGluaXRfbXFkX2hpcTsNCj4gLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0 X21xZF9oaXFfc2RtYTsNCj4gKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hpcV9zZG1hOw0K PiAgIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkOw0KPiAgIAkJbXFkLT51cGRhdGVfbXFkID0g dXBkYXRlX21xZF9oaXE7DQo+ICAgCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQo+ IEBAIC00ODMsOCArNDUzLDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0 X3ZpKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQo+ICAgI2VuZGlmDQo+ICAgCQlicmVhazsNCj4g ICAJY2FzZSBLRkRfTVFEX1RZUEVfRElROg0KPiArCQltcWQtPmFsbG9jYXRlX21xZCA9IGFsbG9j YXRlX2hpcV9tcWQ7DQo+ICAgCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWRfaGlxOw0KPiAtCQlt cWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkOw0KPiArCQltcWQtPmZyZWVfbXFkID0gZnJlZV9t cWQ7DQo+ICAgCQltcWQtPmxvYWRfbXFkID0gbG9hZF9tcWQ7DQo+ICAgCQltcWQtPnVwZGF0ZV9t cWQgPSB1cGRhdGVfbXFkX2hpcTsNCj4gICAJCW1xZC0+ZGVzdHJveV9tcWQgPSBkZXN0cm95X21x ZDsNCj4gQEAgLTQ5NSw4ICs0NjYsOSBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgKm1xZF9tYW5hZ2Vy X2luaXRfdmkoZW51bSBLRkRfTVFEX1RZUEUgdHlwZSwNCj4gICAjZW5kaWYNCj4gICAJCWJyZWFr Ow0KPiAgIAljYXNlIEtGRF9NUURfVFlQRV9TRE1BOg0KPiArCQltcWQtPmFsbG9jYXRlX21xZCA9 IGFsbG9jYXRlX3NkbWFfbXFkOw0KPiAgIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkX3NkbWE7 DQo+IC0JCW1xZC0+dW5pbml0X21xZCA9IHVuaW5pdF9tcWRfaGlxX3NkbWE7DQo+ICsJCW1xZC0+ ZnJlZV9tcWQgPSBmcmVlX21xZF9oaXFfc2RtYTsNCj4gICAJCW1xZC0+bG9hZF9tcWQgPSBsb2Fk X21xZF9zZG1hOw0KPiAgIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21xZF9zZG1hOw0KPiAg IAkJbXFkLT5kZXN0cm95X21xZCA9IGRlc3Ryb3lfbXFkX3NkbWE7DQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=