From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zeng, Oak" Subject: [PATCH 4/6] drm/amdkfd: Separate mqd allocation and initialization Date: Thu, 6 Jun 2019 21:40:46 +0000 Message-ID: <1559857240-6854-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: Content-Language: en-US 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: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Zhao, Yong" , "Kuehling, Felix" , "Freehill, Chris" , "Zeng, Oak" , "Liu, Alex" SW50cm9kdWNlIGEgbmV3IG1xZCBhbGxvY2F0aW9uIGludGVyZmFjZSBhbmQgc3BsaXQgdGhlIG9y aWdpbmFsDQppbml0X21xZCBmdW5jdGlvbiBpbnRvIHR3byBmdW5jdGlvbnM6IGFsbG9jYXRlX21x ZCBhbmQgaW5pdF9tcWQuDQpBbHNvIHJlbmFtZWQgdW5pbml0X21xZCB0byBmcmVlX21xZC4gVGhp cyBpcyBwcmVwYXJhdGlvbiB3b3JrIHRvDQpmaXggYSBjaXJjdWxhciBsb2NrIGRlcGVuZGVuY3ku DQoNCkNoYW5nZS1JZDogSTI2ZTUzZWUxYWJjZGQ2ODhhZDExZDM1YjQzM2RhNzdlM2ZhMWJlZTcN ClNpZ25lZC1vZmYtYnk6IE9hayBaZW5nIDxPYWsuWmVuZ0BhbWQuY29tPg0KLS0tDQogLi4uL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYyAgfCA0MCArKysrKy0t LS0tDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1ZS5jICAgICAg fCAxNiArKy0tDQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmMg ICAgICAgfCAgNCArLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdl ci5oICAgICAgIHwgMTggKysrLS0NCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFk X21hbmFnZXJfY2lrLmMgICB8IDc4ICsrKysrKystLS0tLS0tLS0tLS0NCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdjkuYyAgICB8IDc4ICsrKysrKystLS0tLS0t LS0tLS0NCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYyAg ICB8IDg4ICsrKysrKysrLS0tLS0tLS0tLS0tLS0NCiA3IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNl cnRpb25zKCspLCAxOTMgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jDQppbmRleCAzYzA0MmViLi5l NWIzZmI5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rldmlj ZV9xdWV1ZV9tYW5hZ2VyLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9k ZXZpY2VfcXVldWVfbWFuYWdlci5jDQpAQCAtMzE5LDExICszMTksMTMgQEAgc3RhdGljIGludCBj cmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJ aWYgKHJldHZhbCkNCiAJCWdvdG8gb3V0X2RlYWxsb2NhdGVfaHFkOw0KIA0KLQlyZXR2YWwgPSBt cWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCAmcS0+bXFkX21lbV9vYmosDQotCQkJ CSZxLT5nYXJ0X21xZF9hZGRyLCAmcS0+cHJvcGVydGllcyk7DQotCWlmIChyZXR2YWwpDQorCXEt Pm1xZF9tZW1fb2JqID0gbXFkX21nci0+YWxsb2NhdGVfbXFkKG1xZF9tZ3ItPmRldiwgJnEtPnBy b3BlcnRpZXMpOw0KKwlpZiAoIXEtPm1xZF9tZW1fb2JqKSB7DQorCQlyZXR2YWwgPSAtRU5PTUVN Ow0KIAkJZ290byBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDsNCi0NCisJfQ0KKwltcWRfbWdyLT5p bml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCBxLT5tcWRfbWVtX29iaiwNCisJCQkJJnEtPmdhcnRf bXFkX2FkZHIsICZxLT5wcm9wZXJ0aWVzKTsNCiAJaWYgKHEtPnByb3BlcnRpZXMuaXNfYWN0aXZl KSB7DQogDQogCQlpZiAoV0FSTihxLT5wcm9jZXNzLT5tbSAhPSBjdXJyZW50LT5tbSwNCkBAIC0z MzMsNyArMzM1LDcgQEAgc3RhdGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2 aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJCQlyZXR2YWwgPSBtcWRfbWdyLT5sb2FkX21xZCht cWRfbWdyLCBxLT5tcWQsIHEtPnBpcGUsDQogCQkJCQlxLT5xdWV1ZSwgJnEtPnByb3BlcnRpZXMs IGN1cnJlbnQtPm1tKTsNCiAJCWlmIChyZXR2YWwpDQotCQkJZ290byBvdXRfdW5pbml0X21xZDsN CisJCQlnb3RvIG91dF9mcmVlX21xZDsNCiAJfQ0KIA0KIAlsaXN0X2FkZCgmcS0+bGlzdCwgJnFw ZC0+cXVldWVzX2xpc3QpOw0KQEAgLTM1NSw4ICszNTcsOCBAQCBzdGF0aWMgaW50IGNyZWF0ZV9x dWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KIAkJCWRxbS0+ dG90YWxfcXVldWVfY291bnQpOw0KIAlnb3RvIG91dF91bmxvY2s7DQogDQotb3V0X3VuaW5pdF9t cWQ6DQotCW1xZF9tZ3ItPnVuaW5pdF9tcWQobXFkX21nciwgcS0+bXFkLCBxLT5tcWRfbWVtX29i aik7DQorb3V0X2ZyZWVfbXFkOg0KKwltcWRfbWdyLT5mcmVlX21xZChtcWRfbWdyLCBxLT5tcWQs IHEtPm1xZF9tZW1fb2JqKTsNCiBvdXRfZGVhbGxvY2F0ZV9kb29yYmVsbDoNCiAJZGVhbGxvY2F0 ZV9kb29yYmVsbChxcGQsIHEpOw0KIG91dF9kZWFsbG9jYXRlX2hxZDoNCkBAIC00NTAsNyArNDUy LDcgQEAgc3RhdGljIGludCBkZXN0cm95X3F1ZXVlX25vY3BzY2hfbG9ja2VkKHN0cnVjdCBkZXZp Y2VfcXVldWVfbWFuYWdlciAqZHFtLA0KIAlpZiAocmV0dmFsID09IC1FVElNRSkNCiAJCXFwZC0+ cmVzZXRfd2F2ZWZyb250cyA9IHRydWU7DQogDQotCW1xZF9tZ3ItPnVuaW5pdF9tcWQobXFkX21n ciwgcS0+bXFkLCBxLT5tcWRfbWVtX29iaik7DQorCW1xZF9tZ3ItPmZyZWVfbXFkKG1xZF9tZ3Is IHEtPm1xZCwgcS0+bXFkX21lbV9vYmopOw0KIA0KIAlsaXN0X2RlbCgmcS0+bGlzdCk7DQogCWlm IChsaXN0X2VtcHR5KCZxcGQtPnF1ZXVlc19saXN0KSkgew0KQEAgLTQ4OSw3ICs0OTEsNyBAQCBz dGF0aWMgaW50IGRlc3Ryb3lfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFn ZXIgKmRxbSwNCiANCiBzdGF0aWMgaW50IHVwZGF0ZV9xdWV1ZShzdHJ1Y3QgZGV2aWNlX3F1ZXVl X21hbmFnZXIgKmRxbSwgc3RydWN0IHF1ZXVlICpxKQ0KIHsNCi0JaW50IHJldHZhbDsNCisJaW50 IHJldHZhbCA9IDA7DQogCXN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21ncjsNCiAJc3RydWN0IGtm ZF9wcm9jZXNzX2RldmljZSAqcGRkOw0KIAlib29sIHByZXZfYWN0aXZlID0gZmFsc2U7DQpAQCAt NTI3LDcgKzUyOSw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3F1ZXVlKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtLCBzdHJ1Y3QgcXVldWUgKnEpDQogCQl9DQogCX0NCiANCi0JcmV0dmFs ID0gbXFkX21nci0+dXBkYXRlX21xZChtcWRfbWdyLCBxLT5tcWQsICZxLT5wcm9wZXJ0aWVzKTsN CisJbXFkX21nci0+dXBkYXRlX21xZChtcWRfbWdyLCBxLT5tcWQsICZxLT5wcm9wZXJ0aWVzKTsN CiANCiAJLyoNCiAJICogY2hlY2sgYWN0aXZlIHN0YXRlIHZzLiB0aGUgcHJldmlvdXMgc3RhdGUg YW5kIG1vZGlmeQ0KQEAgLTExNjAsMTEgKzExNjIsMTMgQEAgc3RhdGljIGludCBjcmVhdGVfcXVl dWVfY3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAq cSwNCiAJCWRxbS0+YXNpY19vcHMuaW5pdF9zZG1hX3ZtKGRxbSwgcSwgcXBkKTsNCiAJcS0+cHJv cGVydGllcy50YmFfYWRkciA9IHFwZC0+dGJhX2FkZHI7DQogCXEtPnByb3BlcnRpZXMudG1hX2Fk ZHIgPSBxcGQtPnRtYV9hZGRyOw0KLQlyZXR2YWwgPSBtcWRfbWdyLT5pbml0X21xZChtcWRfbWdy LCAmcS0+bXFkLCAmcS0+bXFkX21lbV9vYmosDQotCQkJCSZxLT5nYXJ0X21xZF9hZGRyLCAmcS0+ cHJvcGVydGllcyk7DQotCWlmIChyZXR2YWwpDQorCXEtPm1xZF9tZW1fb2JqID0gbXFkX21nci0+ YWxsb2NhdGVfbXFkKG1xZF9tZ3ItPmRldiwgJnEtPnByb3BlcnRpZXMpOw0KKwlpZiAoIXEtPm1x ZF9tZW1fb2JqKSB7DQorCQlyZXR2YWwgPSAtRU5PTUVNOw0KIAkJZ290byBvdXRfZGVhbGxvY2F0 ZV9kb29yYmVsbDsNCi0NCisJfQ0KKwltcWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFk LCBxLT5tcWRfbWVtX29iaiwNCisJCQkJJnEtPmdhcnRfbXFkX2FkZHIsICZxLT5wcm9wZXJ0aWVz KTsNCiAJZHFtX2xvY2soZHFtKTsNCiANCiAJbGlzdF9hZGQoJnEtPmxpc3QsICZxcGQtPnF1ZXVl c19saXN0KTsNCkBAIC0xMzczLDggKzEzNzcsOCBAQCBzdGF0aWMgaW50IGRlc3Ryb3lfcXVldWVf Y3BzY2goc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQogDQogCWRxbV91bmxvY2so ZHFtKTsNCiANCi0JLyogRG8gdW5pbml0X21xZCBhZnRlciBkcW1fdW5sb2NrKGRxbSkgdG8gYXZv aWQgY2lyY3VsYXIgbG9ja2luZyAqLw0KLQltcWRfbWdyLT51bmluaXRfbXFkKG1xZF9tZ3IsIHEt Pm1xZCwgcS0+bXFkX21lbV9vYmopOw0KKwkvKiBEbyBmcmVlX21xZCBhZnRlciBkcW1fdW5sb2Nr KGRxbSkgdG8gYXZvaWQgY2lyY3VsYXIgbG9ja2luZyAqLw0KKwltcWRfbWdyLT5mcmVlX21xZCht cWRfbWdyLCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCiANCiAJcmV0dXJuIHJldHZhbDsNCiAN CkBAIC0xNjE1LDE0ICsxNjE5LDE0IEBAIHN0YXRpYyBpbnQgcHJvY2Vzc190ZXJtaW5hdGlvbl9j cHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJCWtmZF9kZWNfY29tcHV0 ZV9hY3RpdmUoZHFtLT5kZXYpOw0KIA0KIAkvKiBMYXN0bHksIGZyZWUgbXFkIHJlc291cmNlcy4N Ci0JICogRG8gdW5pbml0X21xZCgpIGFmdGVyIGRxbV91bmxvY2sgdG8gYXZvaWQgY2lyY3VsYXIg bG9ja2luZy4NCisJICogRG8gZnJlZV9tcWQoKSBhZnRlciBkcW1fdW5sb2NrIHRvIGF2b2lkIGNp cmN1bGFyIGxvY2tpbmcuDQogCSAqLw0KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocSwgbmV4 dCwgJnFwZC0+cXVldWVzX2xpc3QsIGxpc3QpIHsNCiAJCW1xZF9tZ3IgPSBkcW0tPm1xZF9tZ3Jz W2dldF9tcWRfdHlwZV9mcm9tX3F1ZXVlX3R5cGUoDQogCQkJCXEtPnByb3BlcnRpZXMudHlwZSld Ow0KIAkJbGlzdF9kZWwoJnEtPmxpc3QpOw0KIAkJcXBkLT5xdWV1ZV9jb3VudC0tOw0KLQkJbXFk X21nci0+dW5pbml0X21xZChtcWRfbWdyLCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCisJCW1x ZF9tZ3ItPmZyZWVfbXFkKG1xZF9tZ3IsIHEtPm1xZCwgcS0+bXFkX21lbV9vYmopOw0KIAl9DQog DQogCXJldHVybiByZXR2YWw7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2tlcm5lbF9xdWV1ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tl cm5lbF9xdWV1ZS5jDQppbmRleCAxY2MwM2IzLi4yMjk1MDBjIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2tlcm5lbF9xdWV1ZS5jDQorKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGtmZC9rZmRfa2VybmVsX3F1ZXVlLmMNCkBAIC0xMzIsMTMgKzEzMiwxNCBA QCBzdGF0aWMgYm9vbCBpbml0aWFsaXplKHN0cnVjdCBrZXJuZWxfcXVldWUgKmtxLCBzdHJ1Y3Qg a2ZkX2RldiAqZGV2LA0KIAlrcS0+cXVldWUtPmRldmljZSA9IGRldjsNCiAJa3EtPnF1ZXVlLT5w cm9jZXNzID0ga2ZkX2dldF9wcm9jZXNzKGN1cnJlbnQpOw0KIA0KLQlyZXR2YWwgPSBrcS0+bXFk X21nci0+aW5pdF9tcWQoa3EtPm1xZF9tZ3IsICZrcS0+cXVldWUtPm1xZCwNCi0JCQkJCSZrcS0+ cXVldWUtPm1xZF9tZW1fb2JqLA0KKwlrcS0+cXVldWUtPm1xZF9tZW1fb2JqID0ga3EtPm1xZF9t Z3ItPmFsbG9jYXRlX21xZChrcS0+bXFkX21nci0+ZGV2LA0KKwkJCQkJJmtxLT5xdWV1ZS0+cHJv cGVydGllcyk7DQorCWlmICgha3EtPnF1ZXVlLT5tcWRfbWVtX29iaikNCisJCWdvdG8gZXJyX2Fs bG9jYXRlX21xZDsNCisJa3EtPm1xZF9tZ3ItPmluaXRfbXFkKGtxLT5tcWRfbWdyLCAma3EtPnF1 ZXVlLT5tcWQsDQorCQkJCQlrcS0+cXVldWUtPm1xZF9tZW1fb2JqLA0KIAkJCQkJJmtxLT5xdWV1 ZS0+Z2FydF9tcWRfYWRkciwNCiAJCQkJCSZrcS0+cXVldWUtPnByb3BlcnRpZXMpOw0KLQlpZiAo cmV0dmFsICE9IDApDQotCQlnb3RvIGVycl9pbml0X21xZDsNCi0NCiAJLyogYXNzaWduIEhJUSB0 byBIUUQgKi8NCiAJaWYgKHR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfSElRKSB7DQogCQlwcl9kZWJ1 ZygiQXNzaWduaW5nIGhpcSB0byBocWRcbiIpOw0KQEAgLTE2NCw3ICsxNjUsOCBAQCBzdGF0aWMg Ym9vbCBpbml0aWFsaXplKHN0cnVjdCBrZXJuZWxfcXVldWUgKmtxLCBzdHJ1Y3Qga2ZkX2RldiAq ZGV2LA0KIA0KIAlyZXR1cm4gdHJ1ZTsNCiBlcnJfYWxsb2NfZmVuY2U6DQotZXJyX2luaXRfbXFk Og0KKwlrcS0+bXFkX21nci0+ZnJlZV9tcWQoa3EtPm1xZF9tZ3IsIGtxLT5xdWV1ZS0+bXFkLCBr cS0+cXVldWUtPm1xZF9tZW1fb2JqKTsNCitlcnJfYWxsb2NhdGVfbXFkOg0KIAl1bmluaXRfcXVl dWUoa3EtPnF1ZXVlKTsNCiBlcnJfaW5pdF9xdWV1ZToNCiAJa2ZkX2d0dF9zYV9mcmVlKGRldiwg a3EtPndwdHJfbWVtKTsNCkBAIC0xOTMsNyArMTk1LDcgQEAgc3RhdGljIHZvaWQgdW5pbml0aWFs aXplKHN0cnVjdCBrZXJuZWxfcXVldWUgKmtxKQ0KIAllbHNlIGlmIChrcS0+cXVldWUtPnByb3Bl cnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9ESVEpDQogCQlrZmRfZ3R0X3NhX2ZyZWUoa3Et PmRldiwga3EtPmZlbmNlX21lbV9vYmopOw0KIA0KLQlrcS0+bXFkX21nci0+dW5pbml0X21xZChr cS0+bXFkX21nciwga3EtPnF1ZXVlLT5tcWQsDQorCWtxLT5tcWRfbWdyLT5mcmVlX21xZChrcS0+ bXFkX21nciwga3EtPnF1ZXVlLT5tcWQsDQogCQkJCWtxLT5xdWV1ZS0+bXFkX21lbV9vYmopOw0K IA0KIAlrZmRfZ3R0X3NhX2ZyZWUoa3EtPmRldiwga3EtPnJwdHJfbWVtKTsNCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5jDQppbmRleCBjYzA0YjM2Mi4uZDZj ZjM5MSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFu YWdlci5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXIu Yw0KQEAgLTQ1LDcgKzQ1LDcgQEAgaW50IHBpcGVfcHJpb3JpdHlfbWFwW10gPSB7DQogCUtGRF9Q SVBFX1BSSU9SSVRZX0NTX0hJR0gNCiB9Ow0KIA0KLXN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2Nh dGVfaGlxX21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2KQ0KK3N0cnVjdCBrZmRfbWVtX29iaiAqYWxs b2NhdGVfaGlxX21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2LCBzdHJ1Y3QgcXVldWVfcHJvcGVydGll cyAqcSkNCiB7DQogCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmogPSBOVUxMOw0KIA0K QEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9zZG1hX21xZChz dHJ1Y3Qga2ZkX2RldiAqZGV2LA0KIAlyZXR1cm4gbXFkX21lbV9vYmo7DQogfQ0KIA0KLXZvaWQg dW5pbml0X21xZF9oaXFfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQor dm9pZCBmcmVlX21xZF9oaXFfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQs DQogCQkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaikNCiB7DQogCVdBUk5fT04oIW1x ZF9tZW1fb2JqLT5ndHRfbWVtKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfbXFkX21hbmFnZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9t cWRfbWFuYWdlci5oDQppbmRleCA2NmI4YzY3Li41NTBiNjFlIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyLmgNCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlci5oDQpAQCAtMzksNyArMzksNyBAQA0KICAq IEBkZXN0cm95X21xZDogRGVzdHJveXMgdGhlIEhRRCBzbG90IGFuZCBieSB0aGF0IHByZWVtcHQg dGhlIHJlbGV2YW50IHF1ZXVlLg0KICAqIFVzZWQgb25seSBmb3Igbm8gY3Agc2NoZWR1bGluZy4N CiAgKg0KLSAqIEB1bmluaXRfbXFkOiBSZWxlYXNlcyB0aGUgbXFkIGJ1ZmZlciBmcm9tIGxvY2Fs IGdwdSBtZW1vcnkuDQorICogQGZyZWVfbXFkOiBSZWxlYXNlcyB0aGUgbXFkIGJ1ZmZlciBmcm9t IGxvY2FsIGdwdSBtZW1vcnkuDQogICoNCiAgKiBAaXNfb2NjdXBpZWQ6IENoZWNrcyBpZiB0aGUg cmVsZXZhbnQgSFFEIHNsb3QgaXMgb2NjdXBpZWQuDQogICoNCkBAIC02NCw4ICs2NCwxMSBAQA0K ICAqLw0KIGV4dGVybiBpbnQgcGlwZV9wcmlvcml0eV9tYXBbXTsNCiBzdHJ1Y3QgbXFkX21hbmFn ZXIgew0KLQlpbnQJKCppbml0X21xZCkoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1x ZCwNCi0JCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRf YWRkciwNCisJc3RydWN0IGtmZF9tZW1fb2JqKgkoKmFsbG9jYXRlX21xZCkoc3RydWN0IGtmZF9k ZXYgKmtmZCwNCisJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKTsNCisNCisJdm9pZAkoKmlu aXRfbXFkKShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KKwkJCXN0cnVjdCBr ZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQogCQkJc3RydWN0 IHF1ZXVlX3Byb3BlcnRpZXMgKnEpOw0KIA0KIAlpbnQJKCpsb2FkX21xZCkoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KQEAgLTczLDcgKzc2LDcgQEAgc3RydWN0IG1xZF9tYW5h Z2VyIHsNCiAJCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnAsDQogCQkJCXN0cnVjdCBtbV9z dHJ1Y3QgKm1tcyk7DQogDQotCWludAkoKnVwZGF0ZV9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAq bW0sIHZvaWQgKm1xZCwNCisJdm9pZAkoKnVwZGF0ZV9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAq bW0sIHZvaWQgKm1xZCwNCiAJCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpOw0KIA0KIAlp bnQJKCpkZXN0cm95X21xZCkoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KQEAg LTgxLDcgKzg0LDcgQEAgc3RydWN0IG1xZF9tYW5hZ2VyIHsNCiAJCQkJdW5zaWduZWQgaW50IHRp bWVvdXQsIHVpbnQzMl90IHBpcGVfaWQsDQogCQkJCXVpbnQzMl90IHF1ZXVlX2lkKTsNCiANCi0J dm9pZAkoKnVuaW5pdF9tcWQpKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCisJ dm9pZAkoKmZyZWVfbXFkKShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQogCQkJ CXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmopOw0KIA0KIAlib29sCSgqaXNfb2NjdXBp ZWQpKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCkBAIC0xMDIsMTEgKzEwNSwx MiBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIgew0KIAl1aW50MzJfdCBtcWRfc2l6ZTsNCiB9Ow0KIA0K LXN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2NhdGVfaGlxX21xZChzdHJ1Y3Qga2ZkX2RldiAqZGV2 KTsNCitzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX2hpcV9tcWQoc3RydWN0IGtmZF9kZXYg KmRldiwNCisJCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpOw0KIA0KIHN0cnVjdCBrZmRf bWVtX29iaiAqYWxsb2NhdGVfc2RtYV9tcWQoc3RydWN0IGtmZF9kZXYgKmRldiwNCiAJCQkJCXN0 cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKTsNCi12b2lkIHVuaW5pdF9tcWRfaGlxX3NkbWEoc3Ry dWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KK3ZvaWQgZnJlZV9tcWRfaGlxX3NkbWEo c3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAkJCQlzdHJ1Y3Qga2ZkX21lbV9v YmogKm1xZF9tZW1fb2JqKTsNCiANCiB2b2lkIG1xZF9zeW1tZXRyaWNhbGx5X21hcF9jdV9tYXNr KHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jDQppbmRleCBlOTExNDM4Li4yODg3NmFjIDEwMDY0NA0K LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX2Npay5jDQor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfY2lrLmMNCkBA IC03Nyw5ICs3Nyw2IEBAIHN0YXRpYyBzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX21xZChz dHJ1Y3Qga2ZkX2RldiAqa2ZkLA0KIHsNCiAJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29i ajsNCiANCi0JaWYgKHEtPnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfSElRKQ0KLQkJcmV0dXJuIGFs bG9jYXRlX2hpcV9tcWQoa2ZkKTsNCi0NCiAJaWYgKGtmZF9ndHRfc2FfYWxsb2NhdGUoa2ZkLCBz aXplb2Yoc3RydWN0IGNpa19tcWQpLA0KIAkJCSZtcWRfbWVtX29iaikpDQogCQlyZXR1cm4gTlVM TDsNCkBAIC04NywyMSArODQsMTUgQEAgc3RhdGljIHN0cnVjdCBrZmRfbWVtX29iaiAqYWxsb2Nh dGVfbXFkKHN0cnVjdCBrZmRfZGV2ICprZmQsDQogCXJldHVybiBtcWRfbWVtX29iajsNCiB9DQog DQotc3RhdGljIGludCBpbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICoqbXFk LA0KLQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2Fk ZHIsDQorc3RhdGljIHZvaWQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq Km1xZCwNCisJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0 X2FkZHIsDQogCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7DQogCXVpbnQ2NF90IGFk ZHI7DQogCXN0cnVjdCBjaWtfbXFkICptOw0KLQlpbnQgcmV0dmFsOw0KLQlzdHJ1Y3Qga2ZkX2Rl diAqa2ZkID0gbW0tPmRldjsNCi0NCi0JKm1xZF9tZW1fb2JqID0gYWxsb2NhdGVfbXFkKGtmZCwg cSk7DQotCWlmICghKm1xZF9tZW1fb2JqKQ0KLQkJcmV0dXJuIC1FTk9NRU07DQogDQotCW0gPSAo c3RydWN0IGNpa19tcWQgKikgKCptcWRfbWVtX29iaiktPmNwdV9wdHI7DQotCWFkZHIgPSAoKm1x ZF9tZW1fb2JqKS0+Z3B1X2FkZHI7DQorCW0gPSAoc3RydWN0IGNpa19tcWQgKikgbXFkX21lbV9v YmotPmNwdV9wdHI7DQorCWFkZHIgPSBtcWRfbWVtX29iai0+Z3B1X2FkZHI7DQogDQogCW1lbXNl dChtLCAwLCBBTElHTihzaXplb2Yoc3RydWN0IGNpa19tcWQpLCAyNTYpKTsNCiANCkBAIC0xNDQs MzcgKzEzNSwyNyBAQCBzdGF0aWMgaW50IGluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0s IHZvaWQgKiptcWQsDQogCSptcWQgPSBtOw0KIAlpZiAoZ2FydF9hZGRyKQ0KIAkJKmdhcnRfYWRk ciA9IGFkZHI7DQotCXJldHZhbCA9IG1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCi0NCi0JcmV0 dXJuIHJldHZhbDsNCisJbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEpOw0KIH0NCiANCi1zdGF0aWMg aW50IGluaXRfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwNCi0J CQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdhcnRfYWRkciwN CitzdGF0aWMgdm9pZCBpbml0X21xZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQg KiptcWQsDQorCQkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwgdWludDY0X3QgKmdh cnRfYWRkciwNCiAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7DQotCWludCByZXR2 YWw7DQogCXN0cnVjdCBjaWtfc2RtYV9ybGNfcmVnaXN0ZXJzICptOw0KLQlzdHJ1Y3Qga2ZkX2Rl diAqZGV2ID0gbW0tPmRldjsNCiANCi0JKm1xZF9tZW1fb2JqID0gYWxsb2NhdGVfc2RtYV9tcWQo ZGV2LCBxKTsNCi0JaWYgKCEqbXFkX21lbV9vYmopDQotCQlyZXR1cm4gLUVOT01FTTsNCi0NCi0J bSA9IChzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqKSAoKm1xZF9tZW1fb2JqKS0+Y3B1 X3B0cjsNCisJbSA9IChzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAqKSBtcWRfbWVtX29i ai0+Y3B1X3B0cjsNCiANCiAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3QgY2lrX3NkbWFfcmxj X3JlZ2lzdGVycykpOw0KIA0KIAkqbXFkID0gbTsNCiAJaWYgKGdhcnRfYWRkcikNCi0JCSpnYXJ0 X2FkZHIgPSAoKm1xZF9tZW1fb2JqKS0+Z3B1X2FkZHI7DQotDQotCXJldHZhbCA9IG1tLT51cGRh dGVfbXFkKG1tLCBtLCBxKTsNCisJCSpnYXJ0X2FkZHIgPSBtcWRfbWVtX29iai0+Z3B1X2FkZHI7 DQogDQotCXJldHVybiByZXR2YWw7DQorCW1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCiB9DQog DQotc3RhdGljIHZvaWQgdW5pbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICpt cWQsDQorc3RhdGljIHZvaWQgZnJlZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq bXFkLA0KIAkJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmopDQogew0KIAlrZmRfZ3R0 X3NhX2ZyZWUobW0tPmRldiwgbXFkX21lbV9vYmopOw0KQEAgLTIwMyw3ICsxODQsNyBAQCBzdGF0 aWMgaW50IGxvYWRfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0K IAkJCQkJICAgICAgIG1tcyk7DQogfQ0KIA0KLXN0YXRpYyBpbnQgX191cGRhdGVfbXFkKHN0cnVj dCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCitzdGF0aWMgdm9pZCBfX3VwZGF0ZV9tcWQo c3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAkJCXN0cnVjdCBxdWV1ZV9wcm9w ZXJ0aWVzICpxLCB1bnNpZ25lZCBpbnQgYXRjX2JpdCkNCiB7DQogCXN0cnVjdCBjaWtfbXFkICpt Ow0KQEAgLTIzNywyMyArMjE4LDIxIEBAIHN0YXRpYyBpbnQgX191cGRhdGVfbXFkKHN0cnVjdCBt cWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCiAJc2V0X3ByaW9yaXR5KG0sIHEpOw0KIA0KIAlx LT5pc19hY3RpdmUgPSBRVUVVRV9JU19BQ1RJVkUoKnEpOw0KLQ0KLQlyZXR1cm4gMDsNCiB9DQog DQotc3RhdGljIGludCB1cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1x ZCwNCitzdGF0aWMgdm9pZCB1cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQg Km1xZCwNCiAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7DQotCXJldHVybiBfX3Vw ZGF0ZV9tcWQobW0sIG1xZCwgcSwgMSk7DQorCV9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCAxKTsN CiB9DQogDQotc3RhdGljIGludCB1cGRhdGVfbXFkX2hhd2FpaShzdHJ1Y3QgbXFkX21hbmFnZXIg Km1tLCB2b2lkICptcWQsDQorc3RhdGljIHZvaWQgdXBkYXRlX21xZF9oYXdhaWkoc3RydWN0IG1x ZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpx KQ0KIHsNCi0JcmV0dXJuIF9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCAwKTsNCisJX191cGRhdGVf bXFkKG1tLCBtcWQsIHEsIDApOw0KIH0NCiANCi1zdGF0aWMgaW50IHVwZGF0ZV9tcWRfc2RtYShz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQorc3RhdGljIHZvaWQgdXBkYXRlX21x ZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCiAJCQkJc3RydWN0IHF1 ZXVlX3Byb3BlcnRpZXMgKnEpDQogew0KIAlzdHJ1Y3QgY2lrX3NkbWFfcmxjX3JlZ2lzdGVycyAq bTsNCkBAIC0yNzgsOCArMjU3LDYgQEAgc3RhdGljIGludCB1cGRhdGVfbXFkX3NkbWEoc3RydWN0 IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAltLT5zZG1hX3F1ZXVlX2lkID0gcS0+c2Rt YV9xdWV1ZV9pZDsNCiANCiAJcS0+aXNfYWN0aXZlID0gUVVFVUVfSVNfQUNUSVZFKCpxKTsNCi0N Ci0JcmV0dXJuIDA7DQogfQ0KIA0KIHN0YXRpYyBpbnQgZGVzdHJveV9tcWQoc3RydWN0IG1xZF9t YW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KQEAgLTMyNiwxNCArMzAzLDE0IEBAIHN0YXRpYyBib29s IGlzX29jY3VwaWVkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KICAq IHF1ZXVlcyBidXQgd2l0aCBkaWZmZXJlbnQgaW5pdGlhbCB2YWx1ZXMuDQogICovDQogDQotc3Rh dGljIGludCBpbml0X21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwN Ci0JCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRy LA0KK3N0YXRpYyB2b2lkIGluaXRfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lk ICoqbXFkLA0KKwkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwgdWludDY0X3QgKmdh cnRfYWRkciwNCiAJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KIHsNCi0JcmV0dXJuIGlu aXRfbXFkKG1tLCBtcWQsIG1xZF9tZW1fb2JqLCBnYXJ0X2FkZHIsIHEpOw0KKwlpbml0X21xZCht bSwgbXFkLCBtcWRfbWVtX29iaiwgZ2FydF9hZGRyLCBxKTsNCiB9DQogDQotc3RhdGljIGludCB1 cGRhdGVfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQorc3RhdGlj IHZvaWQgdXBkYXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0K IAkJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7DQogCXN0cnVjdCBjaWtfbXFkICpt Ow0KQEAgLTM2MCw3ICszMzcsNiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9tcWRfaGlxKHN0cnVjdCBt cWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCiAJcS0+aXNfYWN0aXZlID0gUVVFVUVfSVNfQUNU SVZFKCpxKTsNCiANCiAJc2V0X3ByaW9yaXR5KG0sIHEpOw0KLQlyZXR1cm4gMDsNCiB9DQogDQog I2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQ0KQEAgLTM5OSw4ICszNzUsOSBAQCBzdHJ1Y3Qg bXFkX21hbmFnZXIgKm1xZF9tYW5hZ2VyX2luaXRfY2lrKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUs DQogCXN3aXRjaCAodHlwZSkgew0KIAljYXNlIEtGRF9NUURfVFlQRV9DUDoNCiAJY2FzZSBLRkRf TVFEX1RZUEVfQ09NUFVURToNCisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfbXFkOw0K IAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkOw0KLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0 X21xZDsNCisJCW1xZC0+ZnJlZV9tcWQgPSBmcmVlX21xZDsNCiAJCW1xZC0+bG9hZF9tcWQgPSBs b2FkX21xZDsNCiAJCW1xZC0+dXBkYXRlX21xZCA9IHVwZGF0ZV9tcWQ7DQogCQltcWQtPmRlc3Ry b3lfbXFkID0gZGVzdHJveV9tcWQ7DQpAQCAtNDExLDggKzM4OCw5IEBAIHN0cnVjdCBtcWRfbWFu YWdlciAqbXFkX21hbmFnZXJfaW5pdF9jaWsoZW51bSBLRkRfTVFEX1RZUEUgdHlwZSwNCiAjZW5k aWYNCiAJCWJyZWFrOw0KIAljYXNlIEtGRF9NUURfVFlQRV9ISVE6DQorCQltcWQtPmFsbG9jYXRl X21xZCA9IGFsbG9jYXRlX2hpcV9tcWQ7DQogCQltcWQtPmluaXRfbXFkID0gaW5pdF9tcWRfaGlx Ow0KLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZF9oaXFfc2RtYTsNCisJCW1xZC0+ZnJl ZV9tcWQgPSBmcmVlX21xZF9oaXFfc2RtYTsNCiAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsN CiAJCW1xZC0+dXBkYXRlX21xZCA9IHVwZGF0ZV9tcWRfaGlxOw0KIAkJbXFkLT5kZXN0cm95X21x ZCA9IGRlc3Ryb3lfbXFkOw0KQEAgLTQyMyw4ICs0MDEsOSBAQCBzdHJ1Y3QgbXFkX21hbmFnZXIg Km1xZF9tYW5hZ2VyX2luaXRfY2lrKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQogI2VuZGlmDQog CQlicmVhazsNCiAJY2FzZSBLRkRfTVFEX1RZUEVfRElROg0KKwkJbXFkLT5hbGxvY2F0ZV9tcWQg PSBhbGxvY2F0ZV9oaXFfbXFkOw0KIAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkX2hpcTsNCi0J CW1xZC0+dW5pbml0X21xZCA9IHVuaW5pdF9tcWQ7DQorCQltcWQtPmZyZWVfbXFkID0gZnJlZV9t cWQ7DQogCQltcWQtPmxvYWRfbXFkID0gbG9hZF9tcWQ7DQogCQltcWQtPnVwZGF0ZV9tcWQgPSB1 cGRhdGVfbXFkX2hpcTsNCiAJCW1xZC0+ZGVzdHJveV9tcWQgPSBkZXN0cm95X21xZDsNCkBAIC00 MzUsOCArNDE0LDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWFuYWdlcl9pbml0X2Npayhl bnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KICNlbmRpZg0KIAkJYnJlYWs7DQogCWNhc2UgS0ZEX01R RF9UWVBFX1NETUE6DQorCQltcWQtPmFsbG9jYXRlX21xZCA9IGFsbG9jYXRlX3NkbWFfbXFkOw0K IAkJbXFkLT5pbml0X21xZCA9IGluaXRfbXFkX3NkbWE7DQotCQltcWQtPnVuaW5pdF9tcWQgPSB1 bmluaXRfbXFkX2hpcV9zZG1hOw0KKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hpcV9zZG1h Ow0KIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkX3NkbWE7DQogCQltcWQtPnVwZGF0ZV9tcWQg PSB1cGRhdGVfbXFkX3NkbWE7DQogCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWRfc2Rt YTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFn ZXJfdjkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92OS5j DQppbmRleCA4MTg5NDRiLi4wYzU4ZjkxIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRrZmQva2ZkX21xZF9tYW5hZ2VyX3Y5LmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92OS5jDQpAQCAtNzksOSArNzksNiBAQCBzdGF0aWMgc3Ry dWN0IGtmZF9tZW1fb2JqICphbGxvY2F0ZV9tcWQoc3RydWN0IGtmZF9kZXYgKmtmZCwNCiAJaW50 IHJldHZhbDsNCiAJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiA9IE5VTEw7DQogDQot CWlmIChxLT50eXBlID09IEtGRF9RVUVVRV9UWVBFX0hJUSkNCi0JCXJldHVybiBhbGxvY2F0ZV9o aXFfbXFkKGtmZCk7DQotDQogCS8qIEZyb20gVjksICBmb3IgQ1dTUiwgdGhlIGNvbnRyb2wgc3Rh Y2sgaXMgbG9jYXRlZCBvbiB0aGUgbmV4dCBwYWdlDQogCSAqIGJvdW5kYXJ5IGFmdGVyIHRoZSBt cWQsIHdlIHdpbGwgdXNlIHRoZSBndHQgYWxsb2NhdGlvbiBmdW5jdGlvbg0KIAkgKiBpbnN0ZWFk IG9mIHN1Yi1hbGxvY2F0aW9uIGZ1bmN0aW9uLg0KQEAgLTExMCwyMSArMTA3LDE1IEBAIHN0YXRp YyBzdHJ1Y3Qga2ZkX21lbV9vYmogKmFsbG9jYXRlX21xZChzdHJ1Y3Qga2ZkX2RldiAqa2ZkLA0K IA0KIH0NCiANCi1zdGF0aWMgaW50IGluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZv aWQgKiptcWQsDQotCQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2NF90 ICpnYXJ0X2FkZHIsDQorc3RhdGljIHZvaWQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICpt bSwgdm9pZCAqKm1xZCwNCisJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqLCB1aW50 NjRfdCAqZ2FydF9hZGRyLA0KIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KIHsNCi0J aW50IHJldHZhbDsNCiAJdWludDY0X3QgYWRkcjsNCiAJc3RydWN0IHY5X21xZCAqbTsNCi0Jc3Ry dWN0IGtmZF9kZXYgKmtmZCA9IG1tLT5kZXY7DQotDQotCSptcWRfbWVtX29iaiA9IGFsbG9jYXRl X21xZChrZmQsIHEpOw0KLQlpZiAoISptcWRfbWVtX29iaikNCi0JCXJldHVybiAtRU5PTUVNOw0K IA0KLQltID0gKHN0cnVjdCB2OV9tcWQgKikgKCptcWRfbWVtX29iaiktPmNwdV9wdHI7DQotCWFk ZHIgPSAoKm1xZF9tZW1fb2JqKS0+Z3B1X2FkZHI7DQorCW0gPSAoc3RydWN0IHY5X21xZCAqKSBt cWRfbWVtX29iai0+Y3B1X3B0cjsNCisJYWRkciA9IG1xZF9tZW1fb2JqLT5ncHVfYWRkcjsNCiAN CiAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3QgdjlfbXFkKSk7DQogDQpAQCAtMTczLDkgKzE2 NCw3IEBAIHN0YXRpYyBpbnQgaW5pdF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq Km1xZCwNCiAJKm1xZCA9IG07DQogCWlmIChnYXJ0X2FkZHIpDQogCQkqZ2FydF9hZGRyID0gYWRk cjsNCi0JcmV0dmFsID0gbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEpOw0KLQ0KLQlyZXR1cm4gcmV0 dmFsOw0KKwltbS0+dXBkYXRlX21xZChtbSwgbSwgcSk7DQogfQ0KIA0KIHN0YXRpYyBpbnQgbG9h ZF9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KQEAgLTE5MCw3ICsxNzks NyBAQCBzdGF0aWMgaW50IGxvYWRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1x ZCwNCiAJCQkJCSAgd3B0cl9zaGlmdCwgMCwgbW1zKTsNCiB9DQogDQotc3RhdGljIGludCB1cGRh dGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCitzdGF0aWMgdm9pZCB1 cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCiAJCSAgICAgIHN0 cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KIHsNCiAJc3RydWN0IHY5X21xZCAqbTsNCkBAIC0y NTIsOCArMjQxLDYgQEAgc3RhdGljIGludCB1cGRhdGVfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAq bW0sIHZvaWQgKm1xZCwNCiAJc2V0X3ByaW9yaXR5KG0sIHEpOw0KIA0KIAlxLT5pc19hY3RpdmUg PSBRVUVVRV9JU19BQ1RJVkUoKnEpOw0KLQ0KLQlyZXR1cm4gMDsNCiB9DQogDQogDQpAQCAtMjY3 LDcgKzI1NCw3IEBAIHN0YXRpYyBpbnQgZGVzdHJveV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICpt bSwgdm9pZCAqbXFkLA0KIAkJcGlwZV9pZCwgcXVldWVfaWQpOw0KIH0NCiANCi1zdGF0aWMgdm9p ZCB1bmluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCitzdGF0aWMg dm9pZCBmcmVlX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQogCQkJc3Ry dWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaikNCiB7DQogCXN0cnVjdCBrZmRfZGV2ICprZmQg PSBtbS0+ZGV2Ow0KQEAgLTMxMSw2MiArMjk4LDQ3IEBAIHN0YXRpYyBpbnQgZ2V0X3dhdmVfc3Rh dGUoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAlyZXR1cm4gMDsNCiB9DQog DQotc3RhdGljIGludCBpbml0X21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAq Km1xZCwNCi0JCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKiptcWRfbWVtX29iaiwgdWludDY0X3QgKmdh cnRfYWRkciwNCitzdGF0aWMgdm9pZCBpbml0X21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICpt bSwgdm9pZCAqKm1xZCwNCisJCQlzdHJ1Y3Qga2ZkX21lbV9vYmogKm1xZF9tZW1fb2JqLCB1aW50 NjRfdCAqZ2FydF9hZGRyLA0KIAkJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0KIHsNCiAJ c3RydWN0IHY5X21xZCAqbTsNCi0JaW50IHJldHZhbCA9IGluaXRfbXFkKG1tLCBtcWQsIG1xZF9t ZW1fb2JqLCBnYXJ0X2FkZHIsIHEpOw0KIA0KLQlpZiAocmV0dmFsICE9IDApDQotCQlyZXR1cm4g cmV0dmFsOw0KKwlpbml0X21xZChtbSwgbXFkLCBtcWRfbWVtX29iaiwgZ2FydF9hZGRyLCBxKTsN CiANCiAJbSA9IGdldF9tcWQoKm1xZCk7DQogDQogCW0tPmNwX2hxZF9wcV9jb250cm9sIHw9IDEg PDwgQ1BfSFFEX1BRX0NPTlRST0xfX1BSSVZfU1RBVEVfX1NISUZUIHwNCiAJCQkxIDw8IENQX0hR RF9QUV9DT05UUk9MX19LTURfUVVFVUVfX1NISUZUOw0KLQ0KLQlyZXR1cm4gcmV0dmFsOw0KIH0N CiANCi1zdGF0aWMgaW50IHVwZGF0ZV9tcWRfaGlxKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZv aWQgKm1xZCwNCitzdGF0aWMgdm9pZCB1cGRhdGVfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIg Km1tLCB2b2lkICptcWQsDQogCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpDQogew0KIAlz dHJ1Y3QgdjlfbXFkICptOw0KLQlpbnQgcmV0dmFsID0gdXBkYXRlX21xZChtbSwgbXFkLCBxKTsN CiANCi0JaWYgKHJldHZhbCAhPSAwKQ0KLQkJcmV0dXJuIHJldHZhbDsNCisJdXBkYXRlX21xZCht bSwgbXFkLCBxKTsNCiANCiAJLyogVE9ETzogd2hhdCdzIHRoZSBwb2ludD8gdXBkYXRlX21xZCBh bHJlYWR5IGRvZXMgdGhpcy4gKi8NCiAJbSA9IGdldF9tcWQobXFkKTsNCiAJbS0+Y3BfaHFkX3Zt aWQgPSBxLT52bWlkOw0KLQlyZXR1cm4gcmV0dmFsOw0KIH0NCiANCi1zdGF0aWMgaW50IGluaXRf bXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwNCi0JCXN0cnVjdCBr ZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAqZ2FydF9hZGRyLA0KK3N0YXRpYyB2 b2lkIGluaXRfbXFkX3NkbWEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqKm1xZCwNCisJ CXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVpbnQ2NF90ICpnYXJ0X2FkZHIsDQog CQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7DQotCWludCByZXR2YWw7DQogCXN0cnVj dCB2OV9zZG1hX21xZCAqbTsNCi0Jc3RydWN0IGtmZF9kZXYgKmRldiA9IG1tLT5kZXY7DQotDQot CSptcWRfbWVtX29iaiA9IGFsbG9jYXRlX3NkbWFfbXFkKGRldiwgcSk7DQotCWlmICghKm1xZF9t ZW1fb2JqKQ0KLQkJcmV0dXJuIC1FTk9NRU07DQogDQotCW0gPSAoc3RydWN0IHY5X3NkbWFfbXFk ICopICgqbXFkX21lbV9vYmopLT5jcHVfcHRyOw0KKwltID0gKHN0cnVjdCB2OV9zZG1hX21xZCAq KSBtcWRfbWVtX29iai0+Y3B1X3B0cjsNCiANCiAJbWVtc2V0KG0sIDAsIHNpemVvZihzdHJ1Y3Qg djlfc2RtYV9tcWQpKTsNCiANCiAJKm1xZCA9IG07DQogCWlmIChnYXJ0X2FkZHIpDQotCQkqZ2Fy dF9hZGRyID0gKCptcWRfbWVtX29iaiktPmdwdV9hZGRyOw0KKwkJKmdhcnRfYWRkciA9IG1xZF9t ZW1fb2JqLT5ncHVfYWRkcjsNCiANCi0JcmV0dmFsID0gbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEp Ow0KLQ0KLQlyZXR1cm4gcmV0dmFsOw0KKwltbS0+dXBkYXRlX21xZChtbSwgbSwgcSk7DQogfQ0K IA0KIHN0YXRpYyBpbnQgbG9hZF9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lk ICptcWQsDQpAQCAtMzgwLDcgKzM1Miw3IEBAIHN0YXRpYyBpbnQgbG9hZF9tcWRfc2RtYShzdHJ1 Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQogDQogI2RlZmluZSBTRE1BX1JMQ19EVU1N WV9ERUZBVUxUIDB4Zg0KIA0KLXN0YXRpYyBpbnQgdXBkYXRlX21xZF9zZG1hKHN0cnVjdCBtcWRf bWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCitzdGF0aWMgdm9pZCB1cGRhdGVfbXFkX3NkbWEoc3Ry dWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAkJc3RydWN0IHF1ZXVlX3Byb3BlcnRp ZXMgKnEpDQogew0KIAlzdHJ1Y3Qgdjlfc2RtYV9tcWQgKm07DQpAQCAtNDA0LDggKzM3Niw2IEBA IHN0YXRpYyBpbnQgdXBkYXRlX21xZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQg Km1xZCwNCiAJbS0+c2RtYXhfcmxjeF9kdW1teV9yZWcgPSBTRE1BX1JMQ19EVU1NWV9ERUZBVUxU Ow0KIA0KIAlxLT5pc19hY3RpdmUgPSBRVUVVRV9JU19BQ1RJVkUoKnEpOw0KLQ0KLQlyZXR1cm4g MDsNCiB9DQogDQogLyoNCkBAIC00NjIsOCArNDMyLDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICpt cWRfbWFuYWdlcl9pbml0X3Y5KGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQogCXN3aXRjaCAodHlw ZSkgew0KIAljYXNlIEtGRF9NUURfVFlQRV9DUDoNCiAJY2FzZSBLRkRfTVFEX1RZUEVfQ09NUFVU RToNCisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfbXFkOw0KIAkJbXFkLT5pbml0X21x ZCA9IGluaXRfbXFkOw0KLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZDsNCisJCW1xZC0+ ZnJlZV9tcWQgPSBmcmVlX21xZDsNCiAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsNCiAJCW1x ZC0+dXBkYXRlX21xZCA9IHVwZGF0ZV9tcWQ7DQogCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJv eV9tcWQ7DQpAQCAtNDc1LDggKzQ0Niw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFn ZXJfaW5pdF92OShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KICNlbmRpZg0KIAkJYnJlYWs7DQog CWNhc2UgS0ZEX01RRF9UWVBFX0hJUToNCisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVf aGlxX21xZDsNCiAJCW1xZC0+aW5pdF9tcWQgPSBpbml0X21xZF9oaXE7DQotCQltcWQtPnVuaW5p dF9tcWQgPSB1bmluaXRfbXFkX2hpcV9zZG1hOw0KKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFk X2hpcV9zZG1hOw0KIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkOw0KIAkJbXFkLT51cGRhdGVf bXFkID0gdXBkYXRlX21xZF9oaXE7DQogCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7 DQpAQCAtNDg3LDggKzQ1OSw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5p dF92OShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KICNlbmRpZg0KIAkJYnJlYWs7DQogCWNhc2Ug S0ZEX01RRF9UWVBFX0RJUToNCisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfaGlxX21x ZDsNCiAJCW1xZC0+aW5pdF9tcWQgPSBpbml0X21xZF9oaXE7DQotCQltcWQtPnVuaW5pdF9tcWQg PSB1bmluaXRfbXFkOw0KKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkOw0KIAkJbXFkLT5sb2Fk X21xZCA9IGxvYWRfbXFkOw0KIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21xZF9oaXE7DQog CQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQpAQCAtNDk5LDggKzQ3Miw5IEBAIHN0 cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92OShlbnVtIEtGRF9NUURfVFlQRSB0 eXBlLA0KICNlbmRpZg0KIAkJYnJlYWs7DQogCWNhc2UgS0ZEX01RRF9UWVBFX1NETUE6DQorCQlt cWQtPmFsbG9jYXRlX21xZCA9IGFsbG9jYXRlX3NkbWFfbXFkOw0KIAkJbXFkLT5pbml0X21xZCA9 IGluaXRfbXFkX3NkbWE7DQotCQltcWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkX2hpcV9zZG1h Ow0KKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hpcV9zZG1hOw0KIAkJbXFkLT5sb2FkX21x ZCA9IGxvYWRfbXFkX3NkbWE7DQogCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkX3NkbWE7 DQogCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWRfc2RtYTsNCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbXFkX21hbmFnZXJfdmkuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFuYWdlcl92aS5jDQppbmRleCAwMGU2YTU5Li43 ZDE0NGY1IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21xZF9t YW5hZ2VyX3ZpLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9tcWRfbWFu YWdlcl92aS5jDQpAQCAtODAsOSArODAsNiBAQCBzdGF0aWMgc3RydWN0IGtmZF9tZW1fb2JqICph bGxvY2F0ZV9tcWQoc3RydWN0IGtmZF9kZXYgKmtmZCwNCiB7DQogCXN0cnVjdCBrZmRfbWVtX29i aiAqbXFkX21lbV9vYmo7DQogDQotCWlmIChxLT50eXBlID09IEtGRF9RVUVVRV9UWVBFX0hJUSkN Ci0JCXJldHVybiBhbGxvY2F0ZV9oaXFfbXFkKGtmZCk7DQotDQogCWlmIChrZmRfZ3R0X3NhX2Fs bG9jYXRlKGtmZCwgc2l6ZW9mKHN0cnVjdCB2aV9tcWQpLA0KIAkJCSZtcWRfbWVtX29iaikpDQog CQlyZXR1cm4gTlVMTDsNCkBAIC05MCwyMSArODcsMTUgQEAgc3RhdGljIHN0cnVjdCBrZmRfbWVt X29iaiAqYWxsb2NhdGVfbXFkKHN0cnVjdCBrZmRfZGV2ICprZmQsDQogCXJldHVybiBtcWRfbWVt X29iajsNCiB9DQogDQotc3RhdGljIGludCBpbml0X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1t LCB2b2lkICoqbXFkLA0KLQkJCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50 NjRfdCAqZ2FydF9hZGRyLA0KK3N0YXRpYyB2b2lkIGluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdl ciAqbW0sIHZvaWQgKiptcWQsDQorCQkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29iaiwg dWludDY0X3QgKmdhcnRfYWRkciwNCiAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7 DQotCWludCByZXR2YWw7DQogCXVpbnQ2NF90IGFkZHI7DQogCXN0cnVjdCB2aV9tcWQgKm07DQot CXN0cnVjdCBrZmRfZGV2ICprZmQgPSBtbS0+ZGV2Ow0KLQ0KLQkqbXFkX21lbV9vYmogPSBhbGxv Y2F0ZV9tcWQoa2ZkLCBxKTsNCi0JaWYgKCEqbXFkX21lbV9vYmopDQotCQlyZXR1cm4gLUVOT01F TTsNCiANCi0JbSA9IChzdHJ1Y3QgdmlfbXFkICopICgqbXFkX21lbV9vYmopLT5jcHVfcHRyOw0K LQlhZGRyID0gKCptcWRfbWVtX29iaiktPmdwdV9hZGRyOw0KKwltID0gKHN0cnVjdCB2aV9tcWQg KikgbXFkX21lbV9vYmotPmNwdV9wdHI7DQorCWFkZHIgPSBtcWRfbWVtX29iai0+Z3B1X2FkZHI7 DQogDQogCW1lbXNldChtLCAwLCBzaXplb2Yoc3RydWN0IHZpX21xZCkpOw0KIA0KQEAgLTE1OSw5 ICsxNTAsNyBAQCBzdGF0aWMgaW50IGluaXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZv aWQgKiptcWQsDQogCSptcWQgPSBtOw0KIAlpZiAoZ2FydF9hZGRyKQ0KIAkJKmdhcnRfYWRkciA9 IGFkZHI7DQotCXJldHZhbCA9IG1tLT51cGRhdGVfbXFkKG1tLCBtLCBxKTsNCi0NCi0JcmV0dXJu IHJldHZhbDsNCisJbW0tPnVwZGF0ZV9tcWQobW0sIG0sIHEpOw0KIH0NCiANCiBzdGF0aWMgaW50 IGxvYWRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCkBAIC0xNzcsNyAr MTY2LDcgQEAgc3RhdGljIGludCBsb2FkX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lk ICptcWQsDQogCQkJCQkgIHdwdHJfc2hpZnQsIHdwdHJfbWFzaywgbW1zKTsNCiB9DQogDQotc3Rh dGljIGludCBfX3VwZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0K K3N0YXRpYyB2b2lkIF9fdXBkYXRlX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICpt cWQsDQogCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEsIHVuc2lnbmVkIGludCBtdHlwZSwN CiAJCQl1bnNpZ25lZCBpbnQgYXRjX2JpdCkNCiB7DQpAQCAtMjQ1LDIxICsyMzQsMTkgQEAgc3Rh dGljIGludCBfX3VwZGF0ZV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0K IAlzZXRfcHJpb3JpdHkobSwgcSk7DQogDQogCXEtPmlzX2FjdGl2ZSA9IFFVRVVFX0lTX0FDVElW RSgqcSk7DQotDQotCXJldHVybiAwOw0KIH0NCiANCiANCi1zdGF0aWMgaW50IHVwZGF0ZV9tcWQo c3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KK3N0YXRpYyB2b2lkIHVwZGF0ZV9t cWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9pZCAqbXFkLA0KIAkJCXN0cnVjdCBxdWV1ZV9w cm9wZXJ0aWVzICpxKQ0KIHsNCi0JcmV0dXJuIF9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCBNVFlQ RV9DQywgMSk7DQorCV9fdXBkYXRlX21xZChtbSwgbXFkLCBxLCBNVFlQRV9DQywgMSk7DQogfQ0K IA0KLXN0YXRpYyBpbnQgdXBkYXRlX21xZF90b25nYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2 b2lkICptcWQsDQorc3RhdGljIHZvaWQgdXBkYXRlX21xZF90b25nYShzdHJ1Y3QgbXFkX21hbmFn ZXIgKm1tLCB2b2lkICptcWQsDQogCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpDQogew0K LQlyZXR1cm4gX191cGRhdGVfbXFkKG1tLCBtcWQsIHEsIE1UWVBFX1VDLCAwKTsNCisJX191cGRh dGVfbXFkKG1tLCBtcWQsIHEsIE1UWVBFX1VDLCAwKTsNCiB9DQogDQogc3RhdGljIGludCBkZXN0 cm95X21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQpAQCAtMjcyLDcgKzI1 OSw3IEBAIHN0YXRpYyBpbnQgZGVzdHJveV9tcWQoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwgdm9p ZCAqbXFkLA0KIAkJcGlwZV9pZCwgcXVldWVfaWQpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCB1bmlu aXRfbXFkKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCitzdGF0aWMgdm9pZCBm cmVlX21xZChzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQogCQkJc3RydWN0IGtm ZF9tZW1fb2JqICptcWRfbWVtX29iaikNCiB7DQogCWtmZF9ndHRfc2FfZnJlZShtbS0+ZGV2LCBt cWRfbWVtX29iaik7DQpAQCAtMzA5LDYxICsyOTYsNDQgQEAgc3RhdGljIGludCBnZXRfd2F2ZV9z dGF0ZShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQogCXJldHVybiAwOw0KIH0N CiANCi1zdGF0aWMgaW50IGluaXRfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lk ICoqbXFkLA0KLQkJCXN0cnVjdCBrZmRfbWVtX29iaiAqKm1xZF9tZW1fb2JqLCB1aW50NjRfdCAq Z2FydF9hZGRyLA0KK3N0YXRpYyB2b2lkIGluaXRfbXFkX2hpcShzdHJ1Y3QgbXFkX21hbmFnZXIg Km1tLCB2b2lkICoqbXFkLA0KKwkJCXN0cnVjdCBrZmRfbWVtX29iaiAqbXFkX21lbV9vYmosIHVp bnQ2NF90ICpnYXJ0X2FkZHIsDQogCQkJc3RydWN0IHF1ZXVlX3Byb3BlcnRpZXMgKnEpDQogew0K IAlzdHJ1Y3QgdmlfbXFkICptOw0KLQlpbnQgcmV0dmFsID0gaW5pdF9tcWQobW0sIG1xZCwgbXFk X21lbV9vYmosIGdhcnRfYWRkciwgcSk7DQotDQotCWlmIChyZXR2YWwgIT0gMCkNCi0JCXJldHVy biByZXR2YWw7DQorCWluaXRfbXFkKG1tLCBtcWQsIG1xZF9tZW1fb2JqLCBnYXJ0X2FkZHIsIHEp Ow0KIA0KIAltID0gZ2V0X21xZCgqbXFkKTsNCiANCiAJbS0+Y3BfaHFkX3BxX2NvbnRyb2wgfD0g MSA8PCBDUF9IUURfUFFfQ09OVFJPTF9fUFJJVl9TVEFURV9fU0hJRlQgfA0KIAkJCTEgPDwgQ1Bf SFFEX1BRX0NPTlRST0xfX0tNRF9RVUVVRV9fU0hJRlQ7DQotDQotCXJldHVybiByZXR2YWw7DQog fQ0KIA0KLXN0YXRpYyBpbnQgdXBkYXRlX21xZF9oaXEoc3RydWN0IG1xZF9tYW5hZ2VyICptbSwg dm9pZCAqbXFkLA0KK3N0YXRpYyB2b2lkIHVwZGF0ZV9tcWRfaGlxKHN0cnVjdCBtcWRfbWFuYWdl ciAqbW0sIHZvaWQgKm1xZCwNCiAJCQlzdHJ1Y3QgcXVldWVfcHJvcGVydGllcyAqcSkNCiB7DQog CXN0cnVjdCB2aV9tcWQgKm07DQotCWludCByZXR2YWwgPSBfX3VwZGF0ZV9tcWQobW0sIG1xZCwg cSwgTVRZUEVfVUMsIDApOw0KLQ0KLQlpZiAocmV0dmFsICE9IDApDQotCQlyZXR1cm4gcmV0dmFs Ow0KKwlfX3VwZGF0ZV9tcWQobW0sIG1xZCwgcSwgTVRZUEVfVUMsIDApOw0KIA0KIAltID0gZ2V0 X21xZChtcWQpOw0KIAltLT5jcF9ocWRfdm1pZCA9IHEtPnZtaWQ7DQotCXJldHVybiByZXR2YWw7 DQogfQ0KIA0KLXN0YXRpYyBpbnQgaW5pdF9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIgKm1t LCB2b2lkICoqbXFkLA0KLQkJc3RydWN0IGtmZF9tZW1fb2JqICoqbXFkX21lbV9vYmosIHVpbnQ2 NF90ICpnYXJ0X2FkZHIsDQorc3RhdGljIHZvaWQgaW5pdF9tcWRfc2RtYShzdHJ1Y3QgbXFkX21h bmFnZXIgKm1tLCB2b2lkICoqbXFkLA0KKwkJc3RydWN0IGtmZF9tZW1fb2JqICptcWRfbWVtX29i aiwgdWludDY0X3QgKmdhcnRfYWRkciwNCiAJCXN0cnVjdCBxdWV1ZV9wcm9wZXJ0aWVzICpxKQ0K IHsNCi0JaW50IHJldHZhbDsNCiAJc3RydWN0IHZpX3NkbWFfbXFkICptOw0KLQlzdHJ1Y3Qga2Zk X2RldiAqZGV2ID0gbW0tPmRldjsNCi0NCi0JKm1xZF9tZW1fb2JqID0gYWxsb2NhdGVfc2RtYV9t cWQoZGV2LCBxKTsNCi0JaWYgKCEqbXFkX21lbV9vYmopDQotCQlyZXR1cm4gLUVOT01FTTsNCiAN Ci0JbSA9IChzdHJ1Y3Qgdmlfc2RtYV9tcWQgKikgKCptcWRfbWVtX29iaiktPmNwdV9wdHI7DQor CW0gPSAoc3RydWN0IHZpX3NkbWFfbXFkICopIG1xZF9tZW1fb2JqLT5jcHVfcHRyOw0KIA0KIAlt ZW1zZXQobSwgMCwgc2l6ZW9mKHN0cnVjdCB2aV9zZG1hX21xZCkpOw0KIA0KIAkqbXFkID0gbTsN CiAJaWYgKGdhcnRfYWRkcikNCi0JCSpnYXJ0X2FkZHIgPSAoKm1xZF9tZW1fb2JqKS0+Z3B1X2Fk ZHI7DQorCQkqZ2FydF9hZGRyID0gbXFkX21lbV9vYmotPmdwdV9hZGRyOw0KIA0KLQlyZXR2YWwg PSBtbS0+dXBkYXRlX21xZChtbSwgbSwgcSk7DQotDQotCXJldHVybiByZXR2YWw7DQorCW1tLT51 cGRhdGVfbXFkKG1tLCBtLCBxKTsNCiB9DQogDQogc3RhdGljIGludCBsb2FkX21xZF9zZG1hKHN0 cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCkBAIC0zNzUsNyArMzQ1LDcgQEAgc3Rh dGljIGludCBsb2FkX21xZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwN CiAJCQkJCSAgICAgICBtbXMpOw0KIH0NCiANCi1zdGF0aWMgaW50IHVwZGF0ZV9tcWRfc2RtYShz dHJ1Y3QgbXFkX21hbmFnZXIgKm1tLCB2b2lkICptcWQsDQorc3RhdGljIHZvaWQgdXBkYXRlX21x ZF9zZG1hKHN0cnVjdCBtcWRfbWFuYWdlciAqbW0sIHZvaWQgKm1xZCwNCiAJCXN0cnVjdCBxdWV1 ZV9wcm9wZXJ0aWVzICpxKQ0KIHsNCiAJc3RydWN0IHZpX3NkbWFfbXFkICptOw0KQEAgLTQwMCw4 ICszNzAsNiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9tcWRfc2RtYShzdHJ1Y3QgbXFkX21hbmFnZXIg Km1tLCB2b2lkICptcWQsDQogCW0tPnNkbWFfcXVldWVfaWQgPSBxLT5zZG1hX3F1ZXVlX2lkOw0K IA0KIAlxLT5pc19hY3RpdmUgPSBRVUVVRV9JU19BQ1RJVkUoKnEpOw0KLQ0KLQlyZXR1cm4gMDsN CiB9DQogDQogLyoNCkBAIC00NTgsOCArNDI2LDkgQEAgc3RydWN0IG1xZF9tYW5hZ2VyICptcWRf bWFuYWdlcl9pbml0X3ZpKGVudW0gS0ZEX01RRF9UWVBFIHR5cGUsDQogCXN3aXRjaCAodHlwZSkg ew0KIAljYXNlIEtGRF9NUURfVFlQRV9DUDoNCiAJY2FzZSBLRkRfTVFEX1RZUEVfQ09NUFVURToN CisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfbXFkOw0KIAkJbXFkLT5pbml0X21xZCA9 IGluaXRfbXFkOw0KLQkJbXFkLT51bmluaXRfbXFkID0gdW5pbml0X21xZDsNCisJCW1xZC0+ZnJl ZV9tcWQgPSBmcmVlX21xZDsNCiAJCW1xZC0+bG9hZF9tcWQgPSBsb2FkX21xZDsNCiAJCW1xZC0+ dXBkYXRlX21xZCA9IHVwZGF0ZV9tcWQ7DQogCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9t cWQ7DQpAQCAtNDcxLDggKzQ0MCw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJf aW5pdF92aShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KICNlbmRpZg0KIAkJYnJlYWs7DQogCWNh c2UgS0ZEX01RRF9UWVBFX0hJUToNCisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfaGlx X21xZDsNCiAJCW1xZC0+aW5pdF9tcWQgPSBpbml0X21xZF9oaXE7DQotCQltcWQtPnVuaW5pdF9t cWQgPSB1bmluaXRfbXFkX2hpcV9zZG1hOw0KKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hp cV9zZG1hOw0KIAkJbXFkLT5sb2FkX21xZCA9IGxvYWRfbXFkOw0KIAkJbXFkLT51cGRhdGVfbXFk ID0gdXBkYXRlX21xZF9oaXE7DQogCQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQpA QCAtNDgzLDggKzQ1Myw5IEBAIHN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92 aShlbnVtIEtGRF9NUURfVFlQRSB0eXBlLA0KICNlbmRpZg0KIAkJYnJlYWs7DQogCWNhc2UgS0ZE X01RRF9UWVBFX0RJUToNCisJCW1xZC0+YWxsb2NhdGVfbXFkID0gYWxsb2NhdGVfaGlxX21xZDsN CiAJCW1xZC0+aW5pdF9tcWQgPSBpbml0X21xZF9oaXE7DQotCQltcWQtPnVuaW5pdF9tcWQgPSB1 bmluaXRfbXFkOw0KKwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkOw0KIAkJbXFkLT5sb2FkX21x ZCA9IGxvYWRfbXFkOw0KIAkJbXFkLT51cGRhdGVfbXFkID0gdXBkYXRlX21xZF9oaXE7DQogCQlt cWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWQ7DQpAQCAtNDk1LDggKzQ2Niw5IEBAIHN0cnVj dCBtcWRfbWFuYWdlciAqbXFkX21hbmFnZXJfaW5pdF92aShlbnVtIEtGRF9NUURfVFlQRSB0eXBl LA0KICNlbmRpZg0KIAkJYnJlYWs7DQogCWNhc2UgS0ZEX01RRF9UWVBFX1NETUE6DQorCQltcWQt PmFsbG9jYXRlX21xZCA9IGFsbG9jYXRlX3NkbWFfbXFkOw0KIAkJbXFkLT5pbml0X21xZCA9IGlu aXRfbXFkX3NkbWE7DQotCQltcWQtPnVuaW5pdF9tcWQgPSB1bmluaXRfbXFkX2hpcV9zZG1hOw0K KwkJbXFkLT5mcmVlX21xZCA9IGZyZWVfbXFkX2hpcV9zZG1hOw0KIAkJbXFkLT5sb2FkX21xZCA9 IGxvYWRfbXFkX3NkbWE7DQogCQltcWQtPnVwZGF0ZV9tcWQgPSB1cGRhdGVfbXFkX3NkbWE7DQog CQltcWQtPmRlc3Ryb3lfbXFkID0gZGVzdHJveV9tcWRfc2RtYTsNCi0tIA0KMi43LjQNCg0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4