From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v15 01/11] x86/hvm/ioreq: maintain an array of ioreq servers rather than a list Date: Thu, 14 Dec 2017 17:41:34 +0000 Message-ID: <20171214174144.27852-2-paul.durrant@citrix.com> References: <20171214174144.27852-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ePXW3-00073R-4S for xen-devel@lists.xenproject.org; Thu, 14 Dec 2017 17:41:51 +0000 In-Reply-To: <20171214174144.27852-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant List-Id: xen-devel@lists.xenproject.org QSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBjdXJyZW50IGltcGxpY2l0IGxpbWl0 YXRpb24gb24gY3JlYXRpb24Kb2YgaW9yZXEgc2VydmVycyB3aGljaCBpcyBkdWUgdG8gdGhlIGFs bG9jYXRpb24gb2YgZ2ZucyBmb3IgdGhlIGlvcmVxCnN0cnVjdHVyZXMgYW5kIGJ1ZmZlcmVkIGlv cmVxIHJpbmcuCgpJdCB3aWxsIHRoZXJlZm9yZSBiZSBuZWNlc3NhcnkgdG8gaW50cm9kdWNlIGFu IGV4cGxpY2l0IGxpbWl0IGFuZCwgc2luY2UKdGhpcyBsaW1pdCBzaG91bGQgYmUgc21hbGwsIGl0 IHNpbXBsaWZpZXMgdGhlIGNvZGUgdG8gbWFpbnRhaW4gYW4gYXJyYXkgb2YKdGhhdCBzaXplIHJh dGhlciB0aGFuIHVzaW5nIGEgbGlzdC4KCkFsc28sIGJ5IHJlc2VydmluZyBhbiBhcnJheSBzbG90 IGZvciB0aGUgZGVmYXVsdCBzZXJ2ZXIgYW5kIHBvcHVsYXRpbmcKYXJyYXkgc2xvdHMgZWFybHkg aW4gY3JlYXRlLCB0aGUgbmVlZCB0byBwYXNzIGFuICdpc19kZWZhdWx0JyBib29sZWFuCnRvIHN1 Yi1mdW5jdGlvbnMgY2FuIGJlIGF2b2lkZWQuCgpTb21lIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMg YXJlIGNoYW5nZWQgYnkgdGhpcyBwYXRjaDogU3BlY2lmaWNhbGx5LCBpbgp0aGUgY2FzZSB3aGVy ZSB0aGUgaWQgb2YgdGhlIGRlZmF1bHQgaW9yZXEgc2VydmVyIGlzIHBhc3NlZCBpbiwgLUVPUE5P VFNVUFAKaXMgbm93IHJldHVybmVkIHJhdGhlciB0aGFuIC1FTk9FTlQuCgpTaWduZWQtb2ZmLWJ5 OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogUm9n ZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KCnYxMDoKIC0gbW9kaWZpZWQgRk9SX0VBQ0guLi4gbWFjcm8gYXMg c3VnZ2VzdGVkIGJ5IEphbi4KIC0gY2hlY2sgZm9yIE5VTEwgaW4gSVNfREVGQVVMVCBtYWNybyBh cyBzdWdnZXN0ZWQgYnkgSmFuLgoKdjk6CiAtIG1vZGlmaWVkIEZPUl9FQUNILi4uIG1hY3JvIGFz IHJlcXVlc3RlZCBieSBBbmRyZXcuCgp2ODoKIC0gQWRkcmVzc2VkIHZhcmlvdXMgY29tbWVudHMg ZnJvbSBKYW4uCgp2NzoKIC0gRml4ZWQgYXNzZXJ0aW9uIGZhaWx1cmUgZm91bmQgaW4gdGVzdGlu Zy4KCnY2OgogLSBVcGRhdGVkIGFjY29yZGluZyB0byBjb21tZW50cyBtYWRlIGJ5IFJvZ2VyIG9u IHY0IHRoYXQgSSdkIG1pc3NlZC4KCnY1OgogLSBTd2l0Y2hlZCBHRVQvU0VUX0lPUkVRX1NFUlZF UigpIG1hY3JvcyB0byBnZXQvc2V0X2lvcmVxX3NlcnZlcigpCiAgIGZ1bmN0aW9ucyB0byBhdm9p ZCBwb3NzaWJsZSBkb3VibGUtZXZhbHVhdGlvbiBpc3N1ZXMuCgp2NDoKIC0gSW50cm9kdWNlZCBt b3JlIGhlbHBlciBtYWNyb3MgYW5kIHJlbG9jYXRlZCB0aGVtIHRvIHRoZSB0b3Agb2YgdGhlCiAg IGNvZGUuCgp2MzoKIC0gTmV3IHBhdGNoIChyZXBsYWNpbmcgIm1vdmUgaXNfZGVmYXVsdCBpbnRv IHN0cnVjdCBodm1faW9yZXFfc2VydmVyIikgaW4KICAgcmVzcG9uc2UgdG8gcmV2aWV3IGNvbW1l bnRzLgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgIHwgNTAyICsrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v ZG9tYWluLmggfCAgMTAgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjQ1IGluc2VydGlvbnMoKyksIDI2 NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggZWM5YjMxZmZjNC4uYzFmNDczZDY0OSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v aW9yZXEuYwpAQCAtMzMsNiArMzMsMzcgQEAKIAogI2luY2x1ZGUgPHB1YmxpYy9odm0vaW9yZXEu aD4KIAorc3RhdGljIHZvaWQgc2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzKQoreworICAgIEFTU0VSVChpZCA8IE1BWF9OUl9JT1JFUV9TRVJWRVJTKTsK KyAgICBBU1NFUlQoIXMgfHwgIWQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2VydmVy W2lkXSk7CisKKyAgICBkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLnNlcnZlcltpZF0g PSBzOworfQorCisjZGVmaW5lIEdFVF9JT1JFUV9TRVJWRVIoZCwgaWQpIFwKKyAgICAoZCktPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2VydmVyW2lkXQorCitzdGF0aWMgc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKmdldF9pb3JlcV9zZXJ2ZXIoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgaWQpCit7CisgICAgaWYgKCBpZCA+PSBNQVhfTlJfSU9SRVFfU0VSVkVSUyApCisgICAg ICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIEdFVF9JT1JFUV9TRVJWRVIoZCwgaWQpOwor fQorCisjZGVmaW5lIElTX0RFRkFVTFQocykgXAorICAgICgocykgJiYgKHMpID09IEdFVF9JT1JF UV9TRVJWRVIoKHMpLT5kb21haW4sIERFRkFVTFRfSU9TRVJWSUQpKQorCisvKiBJdGVyYXRlIG92 ZXIgYWxsIHBvc3NpYmxlIGlvcmVxIHNlcnZlcnMgKi8KKyNkZWZpbmUgRk9SX0VBQ0hfSU9SRVFf U0VSVkVSKGQsIGlkLCBzKSBcCisgICAgZm9yICggKGlkKSA9IDA7IChpZCkgPCBNQVhfTlJfSU9S RVFfU0VSVkVSUzsgKGlkKSsrICkgXAorICAgICAgICBpZiAoICEocyA9IEdFVF9JT1JFUV9TRVJW RVIoZCwgaWQpKSApIFwKKyAgICAgICAgICAgIGNvbnRpbnVlOyBcCisgICAgICAgIGVsc2UKKwog c3RhdGljIGlvcmVxX3QgKmdldF9pb3JlcShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywgc3Ry dWN0IHZjcHUgKnYpCiB7CiAgICAgc2hhcmVkX2lvcGFnZV90ICpwID0gcy0+aW9yZXEudmE7CkBA IC00NywxMCArNzgsOSBAQCBib29sIGh2bV9pb19wZW5kaW5nKHN0cnVjdCB2Y3B1ICp2KQogewog ICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAgc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnM7CisgICAgdW5zaWduZWQgaW50IGlkOwogCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRy eSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9y ZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQor ICAgIEZPUl9FQUNIX0lPUkVRX1NFUlZFUihkLCBpZCwgcykKICAgICB7CiAgICAgICAgIHN0cnVj dCBodm1faW9yZXFfdmNwdSAqc3Y7CiAKQEAgLTEyNywxMCArMTU3LDkgQEAgYm9vbCBoYW5kbGVf aHZtX2lvX2NvbXBsZXRpb24oc3RydWN0IHZjcHUgKnYpCiAgICAgc3RydWN0IGh2bV92Y3B1X2lv ICp2aW8gPSAmdi0+YXJjaC5odm1fdmNwdS5odm1faW87CiAgICAgc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnM7CiAgICAgZW51bSBodm1faW9fY29tcGxldGlvbiBpb19jb21wbGV0aW9uOworICAg IHVuc2lnbmVkIGludCBpZDsKIAotICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxp c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQorICAgIEZPUl9FQUNI X0lPUkVRX1NFUlZFUihkLCBpZCwgcykKICAgICB7CiAgICAgICAgIHN0cnVjdCBodm1faW9yZXFf dmNwdSAqc3Y7CiAKQEAgLTI0MywxMyArMjcyLDEyIEBAIHN0YXRpYyBpbnQgaHZtX21hcF9pb3Jl cV9wYWdlKAogYm9vbCBpc19pb3JlcV9zZXJ2ZXJfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBjb25z dCBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogewogICAgIGNvbnN0IHN0cnVjdCBodm1faW9yZXFf c2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpZDsKICAgICBib29sIGZvdW5kID0gZmFsc2U7 CiAKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2Vy dmVyLmxvY2spOwogCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQorICAgIEZPUl9FQUNIX0lPUkVRX1NF UlZFUihkLCBpZCwgcykKICAgICB7CiAgICAgICAgIGlmICggKHMtPmlvcmVxLnZhICYmIHMtPmlv cmVxLnBhZ2UgPT0gcGFnZSkgfHwKICAgICAgICAgICAgICAocy0+YnVmaW9yZXEudmEgJiYgcy0+ YnVmaW9yZXEucGFnZSA9PSBwYWdlKSApCkBAIC0zMDIsNyArMzMwLDcgQEAgc3RhdGljIHZvaWQg aHZtX3VwZGF0ZV9pb3JlcV9ldnRjaG4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiB9CiAK IHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2Rl ZmF1bHQsIHN0cnVjdCB2Y3B1ICp2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBodm1faW9yZXFfdmNwdSAqc3Y7CiAg ICAgaW50IHJjOwpAQCAtMzMxLDcgKzM1OSw3IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZl cl9hZGRfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICAgICAgICAgIGdvdG8g ZmFpbDM7CiAKICAgICAgICAgcy0+YnVmaW9yZXFfZXZ0Y2huID0gcmM7Ci0gICAgICAgIGlmICgg aXNfZGVmYXVsdCApCisgICAgICAgIGlmICggSVNfREVGQVVMVChzKSApCiAgICAgICAgICAgICBk LT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9CVUZJT1JFUV9FVlRDSE5dID0KICAg ICAgICAgICAgICAgICBzLT5idWZpb3JlcV9ldnRjaG47CiAgICAgfQpAQCAtNDMxLDcgKzQ1OSw2 IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsCiB9CiAKIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9zZXR1cF9wYWdl cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGlzX2RlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVfYnVmaW9yZXEpCiB7CiAgICAgc3RydWN0IGRvbWFp biAqZCA9IHMtPmRvbWFpbjsKQEAgLTQzOSw3ICs0NjYsNyBAQCBzdGF0aWMgaW50IGh2bV9pb3Jl cV9zZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgdW5z aWduZWQgbG9uZyBidWZpb3JlcV9nZm4gPSBnZm5feChJTlZBTElEX0dGTik7CiAgICAgaW50IHJj OwogCi0gICAgaWYgKCBpc19kZWZhdWx0ICkKKyAgICBpZiAoIElTX0RFRkFVTFQocykgKQogICAg IHsKICAgICAgICAgLyoKICAgICAgICAgICogVGhlIGRlZmF1bHQgaW9yZXEgc2VydmVyIG11c3Qg aGFuZGxlIGJ1ZmZlcmVkIGlvcmVxcywgZm9yCkBAIC00NjgsOCArNDk1LDcgQEAgc3RhdGljIGlu dCBodm1faW9yZXFfc2VydmVyX3NldHVwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz LAogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl91bm1h cF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZhdWx0KQorc3RhdGljIHZvaWQgaHZtX2lv cmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKIHsKICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gcy0+ZG9tYWluOwogICAgIGJvb2wgaGFuZGxlX2J1ZmlvcmVx ID0gISFzLT5idWZpb3JlcS52YTsKQEAgLTQ3OSw3ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCBodm1f aW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogCiAg ICAgaHZtX3VubWFwX2lvcmVxX3BhZ2UocywgZmFsc2UpOwogCi0gICAgaWYgKCAhaXNfZGVmYXVs dCApCisgICAgaWYgKCAhSVNfREVGQVVMVChzKSApCiAgICAgewogICAgICAgICBpZiAoIGhhbmRs ZV9idWZpb3JlcSApCiAgICAgICAgICAgICBodm1fZnJlZV9pb3JlcV9nZm4oZCwgcy0+YnVmaW9y ZXEuZ2ZuKTsKQEAgLTQ4OCwxMiArNTE0LDExIEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2 ZXJfdW5tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgfQogfQogCi1z dGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIGlzX2RlZmF1bHQpCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFu Z2VzZXRzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewogICAgIHVuc2lnbmVkIGludCBp OwogCi0gICAgaWYgKCBpc19kZWZhdWx0ICkKKyAgICBpZiAoIElTX0RFRkFVTFQocykgKQogICAg ICAgICByZXR1cm47CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IE5SX0lPX1JBTkdFX1RZUEVTOyBp KysgKQpAQCAtNTAxLDE5ICs1MjYsMjEgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9m cmVlX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIH0KIAogc3RhdGljIGlu dCBodm1faW9yZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp c19kZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp b3NlcnZpZF90IGlkKQogewogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGludCByYzsKIAotICAg IGlmICggaXNfZGVmYXVsdCApCisgICAgaWYgKCBpZCA9PSBERUZBVUxUX0lPU0VSVklEICkKICAg ICAgICAgZ290byBkb25lOwogCisgICAgQVNTRVJUKCFJU19ERUZBVUxUKHMpKTsKKwogICAgIGZv ciAoIGkgPSAwOyBpIDwgTlJfSU9fUkFOR0VfVFlQRVM7IGkrKyApCiAgICAgewogICAgICAgICBj aGFyICpuYW1lOwogCi0gICAgICAgIHJjID0gYXNwcmludGYoJm5hbWUsICJpb3JlcV9zZXJ2ZXIg JWQgJXMiLCBzLT5pZCwKKyAgICAgICAgcmMgPSBhc3ByaW50ZigmbmFtZSwgImlvcmVxX3NlcnZl ciAlZCAlcyIsIGlkLAogICAgICAgICAgICAgICAgICAgICAgIChpID09IFhFTl9ETU9QX0lPX1JB TkdFX1BPUlQpID8gInBvcnQiIDoKICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSBYRU5fRE1P UF9JT19SQU5HRV9NRU1PUlkpID8gIm1lbW9yeSIgOgogICAgICAgICAgICAgICAgICAgICAgIChp ID09IFhFTl9ETU9QX0lPX1JBTkdFX1BDSSkgPyAicGNpIiA6CkBAIC01MzcsMTMgKzU2NCwxMiBA QCBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcmFuZ2VzZXRzKHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzLAogICAgIHJldHVybiAwOwogCiAgZmFpbDoKLSAgICBodm1faW9yZXFf c2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHMsIGZhbHNlKTsKKyAgICBodm1faW9yZXFfc2VydmVyX2Zy ZWVfcmFuZ2VzZXRzKHMpOwogCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBodm1f aW9yZXFfc2VydmVyX2VuYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lk IGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewog ICAgIHN0cnVjdCBkb21haW4gKmQgPSBzLT5kb21haW47CiAgICAgc3RydWN0IGh2bV9pb3JlcV92 Y3B1ICpzdjsKQEAgLTU1NCw3ICs1ODAsNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVy X2VuYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICBpZiAoIHMtPmVuYWJsZWQg KQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAoICFpc19kZWZhdWx0ICkKKyAgICBpZiAo ICFJU19ERUZBVUxUKHMpICkKICAgICB7CiAgICAgICAgIGh2bV9yZW1vdmVfaW9yZXFfZ2ZuKGQs ICZzLT5pb3JlcSk7CiAKQEAgLTU3Myw4ICs1OTksNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFf c2VydmVyX2VuYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICBzcGluX3VubG9j aygmcy0+bG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sIGlzX2RlZmF1bHQpCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2Rp c2FibGUoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAq ZCA9IHMtPmRvbWFpbjsKICAgICBib29sIGhhbmRsZV9idWZpb3JlcSA9ICEhcy0+YnVmaW9yZXEu dmE7CkBAIC01ODQsNyArNjA5LDcgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kaXNh YmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogICAgIGlmICggIXMtPmVuYWJsZWQgKQog ICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAoICFpc19kZWZhdWx0ICkKKyAgICBpZiAoICFJ U19ERUZBVUxUKHMpICkKICAgICB7CiAgICAgICAgIGlmICggaGFuZGxlX2J1ZmlvcmVxICkKICAg ICAgICAgICAgIGh2bV9hZGRfaW9yZXFfZ2ZuKGQsICZzLT5idWZpb3JlcSk7CkBAIC02MDAsMTMg KzYyNSwxMSBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUoc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKnMsCiAKIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRvbWFpbiAqZCwgZG9taWRfdCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCwgaW50IGJ1ZmlvcmVxX2hhbmRsaW5nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCBpZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBidWZpb3JlcV9oYW5kbGluZywgaW9zZXJ2aWRfdCBp ZCkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqdjsKICAgICBpbnQgcmM7CiAKLSAgICBzLT5pZCA9IGlk OwogICAgIHMtPmRvbWFpbiA9IGQ7CiAgICAgcy0+ZG9taWQgPSBkb21pZDsKIApAQCAtNjE0LDcg KzYzNyw3IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzLAogICAgIElOSVRfTElTVF9IRUFEKCZzLT5pb3JlcV92Y3B1X2xpc3QpOwog ICAgIHNwaW5fbG9ja19pbml0KCZzLT5idWZpb3JlcV9sb2NrKTsKIAotICAgIHJjID0gaHZtX2lv cmVxX3NlcnZlcl9hbGxvY19yYW5nZXNldHMocywgaXNfZGVmYXVsdCk7CisgICAgcmMgPSBodm1f aW9yZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0cyhzLCBpZCk7CiAgICAgaWYgKCByYyApCiAgICAg ICAgIHJldHVybiByYzsKIApAQCAtNjIyLDEzICs2NDUsMTMgQEAgc3RhdGljIGludCBodm1faW9y ZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgICAgIHMtPmJ1 ZmlvcmVxX2F0b21pYyA9IHRydWU7CiAKICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfc2V0dXBf cGFnZXMoCi0gICAgICAgICAgICAgcywgaXNfZGVmYXVsdCwgYnVmaW9yZXFfaGFuZGxpbmcgIT0g SFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRik7CisgICAgICAgICAgICAgcywgYnVmaW9yZXFfaGFu ZGxpbmcgIT0gSFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRik7CiAgICAgaWYgKCByYyApCiAgICAg ICAgIGdvdG8gZmFpbF9tYXA7CiAKICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCiAgICAgewot ICAgICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWRkX3ZjcHUocywgaXNfZGVmYXVsdCwgdik7 CisgICAgICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzLCB2KTsKICAgICAgICAg aWYgKCByYyApCiAgICAgICAgICAgICBnb3RvIGZhaWxfYWRkOwogICAgIH0KQEAgLTYzNyw0NyAr NjYwLDIwIEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzLAogCiAgZmFpbF9hZGQ6CiAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVf YWxsX3ZjcHVzKHMpOwotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMocywgaXNfZGVm YXVsdCk7CisgICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKIAogIGZhaWxfbWFw OgotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocywgaXNfZGVmYXVsdCk7Cisg ICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzKTsKIAogICAgIHJldHVybiByYzsK IH0KIAotc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz X2RlZmF1bHQpCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcykKIHsKICAgICBBU1NFUlQoIXMtPmVuYWJsZWQpOwogICAgIGh2bV9p b3JlcV9zZXJ2ZXJfcmVtb3ZlX2FsbF92Y3B1cyhzKTsKLSAgICBodm1faW9yZXFfc2VydmVyX3Vu bWFwX3BhZ2VzKHMsIGlzX2RlZmF1bHQpOwotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5n ZXNldHMocywgaXNfZGVmYXVsdCk7Ci19Ci0KLXN0YXRpYyBpb3NlcnZpZF90IG5leHRfaW9zZXJ2 aWQoc3RydWN0IGRvbWFpbiAqZCkKLXsKLSAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsK LSAgICBpb3NlcnZpZF90IGlkOwotCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZkLT5hcmNo Lmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spKTsKLQotICAgIGlkID0gZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5pZDsKLQotIGFnYWluOgotICAgIGlkKys7Ci0KLSAgICAvKiBD aGVjayBmb3IgdW5pcXVlbmVzcyAqLwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5s aXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAg ICAgIGlmICggaWQgPT0gcy0+aWQgKQotICAgICAgICAgICAgZ290byBhZ2FpbjsKLSAgICB9Ci0K LSAgICBkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmlkID0gaWQ7Ci0KLSAgICByZXR1 cm4gaWQ7CisgICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKKyAgICBodm1faW9y ZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHMpOwogfQogCiBpbnQgaHZtX2NyZWF0ZV9pb3JlcV9z ZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgZG9taWRfdCBkb21pZCwKQEAgLTY4NSw1MiArNjgxLDY0 IEBAIGludCBodm1fY3JlYXRlX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90 IGRvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgKmlkKQogewog ICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpOwogICAg IGludCByYzsKIAogICAgIGlmICggYnVmaW9yZXFfaGFuZGxpbmcgPiBIVk1fSU9SRVFTUlZfQlVG SU9SRVFfQVRPTUlDICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICByYyA9IC1FTk9N RU07CiAgICAgcyA9IHh6YWxsb2Moc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIpOwogICAgIGlmICgg IXMgKQotICAgICAgICBnb3RvIGZhaWwxOworICAgICAgICByZXR1cm4gLUVOT01FTTsKIAogICAg IGRvbWFpbl9wYXVzZShkKTsKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9k b21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCi0gICAgcmMgPSAtRUVYSVNUOwotICAgIGlmICgg aXNfZGVmYXVsdCAmJiBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgIT0g TlVMTCApCi0gICAgICAgIGdvdG8gZmFpbDI7Ci0KLSAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJf aW5pdChzLCBkLCBkb21pZCwgaXNfZGVmYXVsdCwgYnVmaW9yZXFfaGFuZGxpbmcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9pb3NlcnZpZChkKSk7Ci0gICAgaWYgKCByYyAp Ci0gICAgICAgIGdvdG8gZmFpbDM7Ci0KLSAgICBsaXN0X2FkZCgmcy0+bGlzdF9lbnRyeSwKLSAg ICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KTsKLQogICAg IGlmICggaXNfZGVmYXVsdCApCiAgICAgewotICAgICAgICBkLT5hcmNoLmh2bV9kb21haW4uZGVm YXVsdF9pb3JlcV9zZXJ2ZXIgPSBzOwotICAgICAgICBodm1faW9yZXFfc2VydmVyX2VuYWJsZShz LCB0cnVlKTsKKyAgICAgICAgaSA9IERFRkFVTFRfSU9TRVJWSUQ7CisKKyAgICAgICAgcmMgPSAt RUVYSVNUOworICAgICAgICBpZiAoIEdFVF9JT1JFUV9TRVJWRVIoZCwgaSkgKQorICAgICAgICAg ICAgZ290byBmYWlsOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKCBpID0g MDsgaSA8IE1BWF9OUl9JT1JFUV9TRVJWRVJTOyBpKysgKQorICAgICAgICB7CisgICAgICAgICAg ICBpZiAoIGkgIT0gREVGQVVMVF9JT1NFUlZJRCAmJiAhR0VUX0lPUkVRX1NFUlZFUihkLCBpKSAp CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByYyA9IC1FTk9T UEM7CisgICAgICAgIGlmICggaSA+PSBNQVhfTlJfSU9SRVFfU0VSVkVSUyApCisgICAgICAgICAg ICBnb3RvIGZhaWw7CiAgICAgfQogCisgICAgc2V0X2lvcmVxX3NlcnZlcihkLCBpLCBzKTsKKwor ICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9pbml0KHMsIGQsIGRvbWlkLCBidWZpb3JlcV9oYW5k bGluZywgaSk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGlmICgg aSA9PSBERUZBVUxUX0lPU0VSVklEICkKKyAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9lbmFibGUo cyk7CisKICAgICBpZiAoIGlkICkKLSAgICAgICAgKmlkID0gcy0+aWQ7CisgICAgICAgICppZCA9 IGk7CiAKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubG9jayk7CiAgICAgZG9tYWluX3VucGF1c2UoZCk7CiAKICAgICByZXR1cm4gMDsK IAotIGZhaWwzOgotIGZhaWwyOgorIGZhaWw6CisgICAgc2V0X2lvcmVxX3NlcnZlcihkLCBpLCBO VUxMKTsKKwogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlv cmVxX3NlcnZlci5sb2NrKTsKICAgICBkb21haW5fdW5wYXVzZShkKTsKIAogICAgIHhmcmVlKHMp OwotIGZhaWwxOgogICAgIHJldHVybiByYzsKIH0KIApAQCAtNzM5LDM3ICs3NDcsMzQgQEAgaW50 IGh2bV9kZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlk KQogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwogICAgIGludCByYzsKIAotICAgIHNw aW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7 CisgICAgaWYgKCBpZCA9PSBERUZBVUxUX0lPU0VSVklEICkKKyAgICAgICAgcmV0dXJuIC1FUEVS TTsKIAotICAgIHJjID0gLUVOT0VOVDsKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIu bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCi0gICAgewotICAg ICAgICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkK LSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICAgICAgaWYgKCBzLT5pZCAhPSBp ZCApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBp ZCk7CiAKLSAgICAgICAgZG9tYWluX3BhdXNlKGQpOworICAgIHJjID0gLUVOT0VOVDsKKyAgICBp ZiAoICFzICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgcDJtX3NldF9pb3JlcV9zZXJ2 ZXIoZCwgMCwgcyk7CisgICAgQVNTRVJUKCFJU19ERUZBVUxUKHMpKTsKIAotICAgICAgICBodm1f aW9yZXFfc2VydmVyX2Rpc2FibGUocywgZmFsc2UpOworICAgIGRvbWFpbl9wYXVzZShkKTsKIAot ICAgICAgICBsaXN0X2RlbCgmcy0+bGlzdF9lbnRyeSk7CisgICAgcDJtX3NldF9pb3JlcV9zZXJ2 ZXIoZCwgMCwgcyk7CiAKLSAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQocywgZmFsc2Up OworICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzKTsKKyAgICBodm1faW9yZXFfc2VydmVy X2RlaW5pdChzKTsKIAotICAgICAgICBkb21haW5fdW5wYXVzZShkKTsKKyAgICBkb21haW5fdW5w YXVzZShkKTsKIAotICAgICAgICB4ZnJlZShzKTsKKyAgICBzZXRfaW9yZXFfc2VydmVyKGQsIGlk LCBOVUxMKTsKKyAgICB4ZnJlZShzKTsKIAotICAgICAgICByYyA9IDA7Ci0gICAgICAgIGJyZWFr OwotICAgIH0KKyAgICByYyA9IDA7CiAKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZl KCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgcmV0dXJuIHJj OwpAQCAtNzgzLDMxICs3ODgsMzAgQEAgaW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oc3Ry dWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqczsKICAgICBpbnQgcmM7CiAKKyAgICBpZiAoIGlkID09IERFRkFVTFRfSU9TRVJWSUQgKQor ICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZk LT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCi0gICAgcmMgPSAtRU5PRU5U OwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAgICAgIGlmICggcyA9PSBkLT5hcmNo Lmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAgICAgY29udGludWU7 CisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwgaWQpOwogCi0gICAgICAgIGlmICggcy0+aWQg IT0gaWQgKQotICAgICAgICAgICAgY29udGludWU7CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlm ICggIXMgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAqaW9yZXFfZ2ZuID0gcy0+aW9y ZXEuZ2ZuOworICAgIEFTU0VSVCghSVNfREVGQVVMVChzKSk7CiAKLSAgICAgICAgaWYgKCBzLT5i dWZpb3JlcS52YSAhPSBOVUxMICkKLSAgICAgICAgewotICAgICAgICAgICAgKmJ1ZmlvcmVxX2dm biA9IHMtPmJ1ZmlvcmVxLmdmbjsKLSAgICAgICAgICAgICpidWZpb3JlcV9wb3J0ID0gcy0+YnVm aW9yZXFfZXZ0Y2huOwotICAgICAgICB9CisgICAgKmlvcmVxX2dmbiA9IHMtPmlvcmVxLmdmbjsK IAotICAgICAgICByYyA9IDA7Ci0gICAgICAgIGJyZWFrOworICAgIGlmICggcy0+YnVmaW9yZXEu dmEgIT0gTlVMTCApCisgICAgeworICAgICAgICAqYnVmaW9yZXFfZ2ZuID0gcy0+YnVmaW9yZXEu Z2ZuOworICAgICAgICAqYnVmaW9yZXFfcG9ydCA9IHMtPmJ1ZmlvcmVxX2V2dGNobjsKICAgICB9 CiAKKyAgICByYyA9IDA7CisKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5h cmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgcmV0dXJuIHJjOwpAQCAt ODE4LDUxICs4MjIsNDkgQEAgaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0 cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3QgZW5kKQogewogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzOworICAgIHN0cnVjdCByYW5nZXNldCAqcjsKICAgICBpbnQgcmM7CiAKICAgICBpZiAoIHN0 YXJ0ID4gZW5kICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKKyAgICBpZiAoIGlkID09IERF RkFVTFRfSU9TRVJWSUQgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKICAgICBzcGlu X2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwog CisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwgaWQpOworCiAgICAgcmMgPSAtRU5PRU5UOwot ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAm ZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2 bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAgICAgY29udGludWU7Cisg ICAgaWYgKCAhcyApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgIGlmICggcy0+aWQgPT0g aWQgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQgKnI7CisgICAgQVNT RVJUKCFJU19ERUZBVUxUKHMpKTsKIAotICAgICAgICAgICAgc3dpdGNoICggdHlwZSApCi0gICAg ICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6Ci0gICAg ICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKLSAgICAgICAgICAgIGNhc2Ug WEVOX0RNT1BfSU9fUkFOR0VfUENJOgotICAgICAgICAgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBl XTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7Cisg ICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgorICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFO R0VfTUVNT1JZOgorICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUENJOgorICAgICAgICByID0g cy0+cmFuZ2VbdHlwZV07CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBkZWZhdWx0Ogot ICAgICAgICAgICAgICAgIHIgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg ICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHIgPSBOVUxMOworICAgICAgICBicmVhazsK KyAgICB9CiAKLSAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKLSAgICAgICAgICAgIGlmICggIXIg KQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVJTlZBTDsKKyAgICBpZiAoICFy ICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgICAgIHJjID0gLUVFWElTVDsKLSAgICAg ICAgICAgIGlmICggcmFuZ2VzZXRfb3ZlcmxhcHNfcmFuZ2Uociwgc3RhcnQsIGVuZCkgKQotICAg ICAgICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVFWElTVDsKKyAgICBpZiAoIHJhbmdlc2V0 X292ZXJsYXBzX3JhbmdlKHIsIHN0YXJ0LCBlbmQpICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAg ICAgICAgICAgIHJjID0gcmFuZ2VzZXRfYWRkX3JhbmdlKHIsIHN0YXJ0LCBlbmQpOwotICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmMgPSByYW5nZXNldF9hZGRfcmFu Z2Uociwgc3RhcnQsIGVuZCk7CiAKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZk LT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgcmV0dXJuIHJjOwpA QCAtODczLDUxICs4NzUsNDkgQEAgaW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3Nl cnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBlbmQpCiB7CiAgICAgc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnM7CisgICAgc3RydWN0IHJhbmdlc2V0ICpyOwogICAgIGludCByYzsKIAog ICAgIGlmICggc3RhcnQgPiBlbmQgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAorICAgIGlm ICggaWQgPT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK KwogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2 ZXIubG9jayk7CiAKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7CisKICAgICByYyA9 IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBzID09 IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBj b250aW51ZTsKKyAgICBpZiAoICFzICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgaWYg KCBzLT5pZCA9PSBpZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCByYW5nZXNldCAq cjsKKyAgICBBU1NFUlQoIUlTX0RFRkFVTFQocykpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKCB0 eXBlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0Vf UE9SVDoKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAgICAg ICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6Ci0gICAgICAgICAgICAgICAgciA9IHMt PnJhbmdlW3R5cGVdOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAoIHR5cGUg KQorICAgIHsKKyAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgY2FzZSBYRU5f RE1PUF9JT19SQU5HRV9NRU1PUlk6CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6Cisg ICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAg IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJl YWs7Ci0gICAgICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgciA9IE5VTEw7CisgICAg ICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAg ICAgaWYgKCAhciApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRUlOVkFMOwor ICAgIGlmICggIXIgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAgICAgcmMgPSAtRU5P RU5UOwotICAgICAgICAgICAgaWYgKCAhcmFuZ2VzZXRfY29udGFpbnNfcmFuZ2Uociwgc3RhcnQs IGVuZCkgKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVOT0VOVDsKKyAgICBp ZiAoICFyYW5nZXNldF9jb250YWluc19yYW5nZShyLCBzdGFydCwgZW5kKSApCisgICAgICAgIGdv dG8gb3V0OwogCi0gICAgICAgICAgICByYyA9IHJhbmdlc2V0X3JlbW92ZV9yYW5nZShyLCBzdGFy dCwgZW5kKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHJjID0g cmFuZ2VzZXRfcmVtb3ZlX3JhbmdlKHIsIHN0YXJ0LCBlbmQpOwogCisgb3V0OgogICAgIHNwaW5f dW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsK IAogICAgIHJldHVybiByYzsKQEAgLTkzNyw2ICs5MzcsOSBAQCBpbnQgaHZtX21hcF9tZW1fdHlw ZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICBz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKICAgICBpbnQgcmM7CiAKKyAgICBpZiAoIGlkID09 IERFRkFVTFRfSU9TRVJWSUQgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKICAgICBp ZiAoIHR5cGUgIT0gSFZNTUVNX2lvcmVxX3NlcnZlciApCiAgICAgICAgIHJldHVybiAtRUlOVkFM OwogCkBAIC05NDUsMTkgKzk0OCwxNCBAQCBpbnQgaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9z ZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKIAogICAgIHNwaW5fbG9ja19y ZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICBy YyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBz ID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAg ICBjb250aW51ZTsKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7CiAKLSAgICAgICAg aWYgKCBzLT5pZCA9PSBpZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJjID0gcDJtX3NldF9p b3JlcV9zZXJ2ZXIoZCwgZmxhZ3MsIHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K KyAgICBpZiAoICFzICkKKyAgICAgICAgcmMgPSAtRU5PRU5UOworICAgIGVsc2UKKyAgICB7Cisg ICAgICAgIEFTU0VSVCghSVNfREVGQVVMVChzKSk7CisgICAgICAgIHJjID0gcDJtX3NldF9pb3Jl cV9zZXJ2ZXIoZCwgZmxhZ3MsIHMpOwogICAgIH0KIAogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2 ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKQEAgLTk3NiwzOCArOTc0 LDM0IEBAIGludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWlu ICpkLCBpb3NlcnZpZF90IGlkLAogaW50IGh2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKHN0cnVj dCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCBlbmFibGVkKQogewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5OworICAgIHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwogICAgIGludCByYzsKIAorICAgIGlmICggaWQgPT0g REVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKwogICAgIHNw aW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7 CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaCAoIGVudHJ5LAotICAgICAg ICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0ICkKLSAg ICB7Ci0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0gbGlzdF9lbnRyeShlbnRy eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBodm1faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdF9lbnRyeSk7CisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwgaWQp OwogCi0gICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9z ZXJ2ZXIgKQotICAgICAgICAgICAgY29udGludWU7CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlm ICggIXMgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICBpZiAoIHMtPmlkICE9IGlkICkK LSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIEFTU0VSVCghSVNfREVGQVVMVChzKSk7CiAKLSAg ICAgICAgZG9tYWluX3BhdXNlKGQpOworICAgIGRvbWFpbl9wYXVzZShkKTsKIAotICAgICAgICBp ZiAoIGVuYWJsZWQgKQotICAgICAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9lbmFibGUocywgZmFs c2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUo cywgZmFsc2UpOworICAgIGlmICggZW5hYmxlZCApCisgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJf ZW5hYmxlKHMpOworICAgIGVsc2UKKyAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHMp OwogCi0gICAgICAgIGRvbWFpbl91bnBhdXNlKGQpOworICAgIGRvbWFpbl91bnBhdXNlKGQpOwog Ci0gICAgICAgIHJjID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIHJjID0gMDsKIAor IG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubG9jayk7CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtMTAxNSwxNyArMTAwOSwxNCBA QCBpbnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2 aWRfdCBpZCwKIGludCBodm1fYWxsX2lvcmVxX3NlcnZlcnNfYWRkX3ZjcHUoc3RydWN0IGRvbWFp biAqZCwgc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7 CisgICAgdW5zaWduZWQgaW50IGlkOwogICAgIGludCByYzsKIAogICAgIHNwaW5fbG9ja19yZWN1 cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICBsaXN0 X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg bGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsK LSAgICAgICAgYm9vbCBpc19kZWZhdWx0ID0gKHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1 bHRfaW9yZXFfc2VydmVyKTsKLQotICAgICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWRkX3Zj cHUocywgaXNfZGVmYXVsdCwgdik7CisgICAgICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hZGRf dmNwdShzLCB2KTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAg ICAgfQpAQCAtMTAzNSwxMCArMTAyNiwxNSBAQCBpbnQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX2Fk ZF92Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogICAgIHJldHVybiAwOwog CiAgZmFpbDoKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgd2hpbGUgKCBpZC0tICE9IDAgKQor ICAgIHsKKyAgICAgICAgcyA9IEdFVF9JT1JFUV9TRVJWRVIoZCwgaWQpOworCisgICAgICAgIGlm ICggIXMgKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaHZtX2lvcmVxX3NlcnZl cl9yZW1vdmVfdmNwdShzLCB2KTsKKyAgICB9CiAKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUo JmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKQEAgLTEwNDgsMTIgKzEw NDQsMTEgQEAgaW50IGh2bV9hbGxfaW9yZXFfc2VydmVyc19hZGRfdmNwdShzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgdmNwdSAqdikKIHZvaWQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX3JlbW92ZV92 Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpZDsKIAogICAgIHNwaW5fbG9ja19y ZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQogICAg ICAgICBodm1faW9yZXFfc2VydmVyX3JlbW92ZV92Y3B1KHMsIHYpOwogCiAgICAgc3Bpbl91bmxv Y2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwpAQCAt MTA2MSwyOCArMTA1NiwxOSBAQCB2b2lkIGh2bV9hbGxfaW9yZXFfc2VydmVyc19yZW1vdmVfdmNw dShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdikKIAogdm9pZCBodm1fZGVzdHJveV9h bGxfaW9yZXFfc2VydmVycyhzdHJ1Y3QgZG9tYWluICpkKQogewotICAgIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzLCAqbmV4dDsKKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKyAg ICB1bnNpZ25lZCBpbnQgaWQ7CiAKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2 bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgLyogTm8gbmVlZCB0byBkb21haW5f cGF1c2UoKSBhcyB0aGUgZG9tYWluIGlzIGJlaW5nIHRvcm4gZG93biAqLwogCi0gICAgbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4u aW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9l bnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsKLSAgICAg ICAgYm9vbCBpc19kZWZhdWx0ID0gKHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9y ZXFfc2VydmVyKTsKLQotICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUocywgaXNfZGVm YXVsdCk7Ci0KLSAgICAgICAgaWYgKCBpc19kZWZhdWx0ICkKLSAgICAgICAgICAgIGQtPmFyY2gu aHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciA9IE5VTEw7Ci0KLSAgICAgICAgbGlzdF9k ZWwoJnMtPmxpc3RfZW50cnkpOwotCi0gICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGVpbml0KHMs IGlzX2RlZmF1bHQpOworICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUocyk7CisgICAg ICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGVpbml0KHMpOwogCisgICAgICAgIHNldF9pb3JlcV9zZXJ2 ZXIoZCwgaWQsIE5VTEwpOwogICAgICAgICB4ZnJlZShzKTsKICAgICB9CiAKQEAgLTExMTcsNyAr MTEwMyw3IEBAIGludCBodm1fc2V0X2RtX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90 IGRvbWlkKQogICAgICAqIHN0aWxsIGJlIHNldCBhbmQgdGh1cywgd2hlbiB0aGUgc2VydmVyIGlz IGNyZWF0ZWQsIGl0IHdpbGwgaGF2ZQogICAgICAqIHRoZSBjb3JyZWN0IGRvbWlkLgogICAgICAq LwotICAgIHMgPSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXI7CisgICAg cyA9IEdFVF9JT1JFUV9TRVJWRVIoZCwgREVGQVVMVF9JT1NFUlZJRCk7CiAgICAgaWYgKCAhcyAp CiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTE3MCwxMiArMTE1NiwxMCBAQCBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwK ICAgICB1aW50MzJfdCBjZjg7CiAgICAgdWludDhfdCB0eXBlOwogICAgIHVpbnQ2NF90IGFkZHI7 Ci0KLSAgICBpZiAoIGxpc3RfZW1wdHkoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIu bGlzdCkgKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgaWQ7CiAKICAg ICBpZiAoIHAtPnR5cGUgIT0gSU9SRVFfVFlQRV9DT1BZICYmIHAtPnR5cGUgIT0gSU9SRVFfVFlQ RV9QSU8gKQotICAgICAgICByZXR1cm4gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFf c2VydmVyOworICAgICAgICByZXR1cm4gR0VUX0lPUkVRX1NFUlZFUihkLCBERUZBVUxUX0lPU0VS VklEKTsKIAogICAgIGNmOCA9IGQtPmFyY2guaHZtX2RvbWFpbi5wY2lfY2Y4OwogCkBAIC0xMjEz LDE2ICsxMTk3LDExIEBAIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpodm1fc2VsZWN0X2lvcmVx X3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBhZGRyID0gcC0+YWRkcjsKICAgICB9 CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlk LCBzKQogICAgIHsKICAgICAgICAgc3RydWN0IHJhbmdlc2V0ICpyOwogCi0gICAgICAgIGlmICgg cyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAg ICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKCAhcy0+ZW5hYmxlZCApCisgICAgICAgIGlmICgg SVNfREVGQVVMVChzKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByID0gcy0+ cmFuZ2VbdHlwZV07CkBAIC0xMjU1LDcgKzEyMzQsNyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgfQog ICAgIH0KIAotICAgIHJldHVybiBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2 ZXI7CisgICAgcmV0dXJuIEdFVF9JT1JFUV9TRVJWRVIoZCwgREVGQVVMVF9JT1NFUlZJRCk7CiB9 CiAKIHN0YXRpYyBpbnQgaHZtX3NlbmRfYnVmZmVyZWRfaW9yZXEoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsIGlvcmVxX3QgKnApCkBAIC0xNDE0LDEzICsxMzkzLDEzIEBAIHVuc2lnbmVkIGlu dCBodm1fYnJvYWRjYXN0X2lvcmVxKGlvcmVxX3QgKnAsIGJvb2wgYnVmZmVyZWQpCiB7CiAgICAg c3RydWN0IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX2lvcmVx X3NlcnZlciAqczsKLSAgICB1bnNpZ25lZCBpbnQgZmFpbGVkID0gMDsKKyAgICB1bnNpZ25lZCBp bnQgaWQsIGZhaWxlZCA9IDA7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlz dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hf SU9SRVFfU0VSVkVSKGQsIGlkLCBzKQorICAgIHsKICAgICAgICAgaWYgKCBodm1fc2VuZF9pb3Jl cShzLCBwLCBidWZmZXJlZCkgPT0gWDg2RU1VTF9VTkhBTkRMRUFCTEUgKQogICAgICAgICAgICAg ZmFpbGVkKys7CisgICAgfQogCiAgICAgcmV0dXJuIGZhaWxlZDsKIH0KQEAgLTE0NDAsNyArMTQx OSw2IEBAIHN0YXRpYyBpbnQgaHZtX2FjY2Vzc19jZjgoCiB2b2lkIGh2bV9pb3JlcV9pbml0KHN0 cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9zZXJ2ZXIubG9jayk7Ci0gICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2guaHZtX2Rv bWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCk7CiAKICAgICByZWdpc3Rlcl9wb3J0aW9faGFuZGxlcihk LCAweGNmOCwgNCwgaHZtX2FjY2Vzc19jZjgpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaApp bmRleCA3ZjEyOGMwNWZmLi5lMTdiYmU0MDA0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20t eDg2L2h2bS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaApA QCAtNjAsNyArNjAsNiBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciB7CiAKICAgICAvKiBEb21h aW4gaWQgb2YgZW11bGF0aW5nIGRvbWFpbiAqLwogICAgIGRvbWlkX3QgICAgICAgICAgICAgICAg ZG9taWQ7Ci0gICAgaW9zZXJ2aWRfdCAgICAgICAgICAgICBpZDsKICAgICBzdHJ1Y3QgaHZtX2lv cmVxX3BhZ2UgIGlvcmVxOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgaW9yZXFfdmNwdV9s aXN0OwogICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAgYnVmaW9yZXE7CkBAIC0xMDAsNiArOTks OSBAQCBzdHJ1Y3QgaHZtX3BpX29wcyB7CiAgICAgdm9pZCAoKmRvX3Jlc3VtZSkoc3RydWN0IHZj cHUgKnYpOwogfTsKIAorI2RlZmluZSBNQVhfTlJfSU9SRVFfU0VSVkVSUyA4CisjZGVmaW5lIERF RkFVTFRfSU9TRVJWSUQgMAorCiBzdHJ1Y3QgaHZtX2RvbWFpbiB7CiAgICAgLyogR3Vlc3QgcGFn ZSByYW5nZSB1c2VkIGZvciBub24tZGVmYXVsdCBpb3JlcSBzZXJ2ZXJzICovCiAgICAgc3RydWN0 IHsKQEAgLTEwOSwxMSArMTExLDkgQEAgc3RydWN0IGh2bV9kb21haW4gewogCiAgICAgLyogTG9j ayBwcm90ZWN0cyBhbGwgb3RoZXIgdmFsdWVzIGluIHRoZSBzdWItc3RydWN0IGFuZCB0aGUgZGVm YXVsdCAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIHNwaW5sb2NrX3QgICAgICAgbG9jazsKLSAg ICAgICAgaW9zZXJ2aWRfdCAgICAgICBpZDsKLSAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0 OworICAgICAgICBzcGlubG9ja190ICAgICAgICAgICAgICBsb2NrOworICAgICAgICBzdHJ1Y3Qg aHZtX2lvcmVxX3NlcnZlciAqc2VydmVyW01BWF9OUl9JT1JFUV9TRVJWRVJTXTsKICAgICB9IGlv cmVxX3NlcnZlcjsKLSAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqZGVmYXVsdF9pb3JlcV9z ZXJ2ZXI7CiAKICAgICAvKiBDYWNoZWQgQ0Y4IGZvciBndWVzdCBQQ0kgY29uZmlnIGN5Y2xlcyAq LwogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHBjaV9jZjg7Ci0tIAoyLjExLjAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs