From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v11 01/11] x86/hvm/ioreq: maintain an array of ioreq servers rather than a list Date: Thu, 12 Oct 2017 17:25:53 +0100 Message-ID: <20171012162603.3016-2-paul.durrant@citrix.com> References: <20171012162603.3016-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e2gJG-0006e6-78 for xen-devel@lists.xenproject.org; Thu, 12 Oct 2017 16:26:10 +0000 In-Reply-To: <20171012162603.3016-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.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 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggZjJlMGIzZjc0YS4uZTZjY2M3NTcyYSAxMDA2 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 ODE4LDQ4ICs4MjIsNDYgQEAgaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9yZXFfc2VydmVyKHN0 cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDY0X3QgZW5kKQogewogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzOworICAgIHN0cnVjdCByYW5nZXNldCAqcjsKICAgICBpbnQgcmM7CiAKKyAgICBpZiAoIGlk ID09IERFRkFVTFRfSU9TRVJWSUQgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisKICAg ICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxv Y2spOwogCisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwgaWQpOworCiAgICAgcmMgPSAtRU5P RU5UOwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAg ICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAgICAgIGlmICggcyA9PSBkLT5h cmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAgICAgY29udGlu dWU7CisgICAgaWYgKCAhcyApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgIGlmICggcy0+ aWQgPT0gaWQgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQgKnI7Cisg ICAgQVNTRVJUKCFJU19ERUZBVUxUKHMpKTsKIAotICAgICAgICAgICAgc3dpdGNoICggdHlwZSAp Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6 Ci0gICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKLSAgICAgICAgICAg IGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUENJOgotICAgICAgICAgICAgICAgIHIgPSBzLT5yYW5n ZVt0eXBlXTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAg ICB7CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgorICAgIGNhc2UgWEVOX0RNT1Bf SU9fUkFOR0VfTUVNT1JZOgorICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUENJOgorICAgICAg ICByID0gcy0+cmFuZ2VbdHlwZV07CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBkZWZh dWx0OgotICAgICAgICAgICAgICAgIHIgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwot ICAgICAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHIgPSBOVUxMOworICAgICAgICBi cmVhazsKKyAgICB9CiAKLSAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKLSAgICAgICAgICAgIGlm ICggIXIgKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVJTlZBTDsKKyAgICBp ZiAoICFyICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgICAgIHJjID0gLUVFWElTVDsK LSAgICAgICAgICAgIGlmICggcmFuZ2VzZXRfb3ZlcmxhcHNfcmFuZ2Uociwgc3RhcnQsIGVuZCkg KQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVFWElTVDsKKyAgICBpZiAoIHJh bmdlc2V0X292ZXJsYXBzX3JhbmdlKHIsIHN0YXJ0LCBlbmQpICkKKyAgICAgICAgZ290byBvdXQ7 CiAKLSAgICAgICAgICAgIHJjID0gcmFuZ2VzZXRfYWRkX3JhbmdlKHIsIHN0YXJ0LCBlbmQpOwot ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmMgPSByYW5nZXNldF9h ZGRfcmFuZ2Uociwgc3RhcnQsIGVuZCk7CiAKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfcmVjdXJz aXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgcmV0dXJu IHJjOwpAQCAtODcwLDQ4ICs4NzIsNDYgQEAgaW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lv cmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBlbmQpCiB7CiAgICAgc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgc3RydWN0IHJhbmdlc2V0ICpyOwogICAgIGludCBy YzsKIAorICAgIGlmICggaWQgPT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAt RU9QTk9UU1VQUDsKKwogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7 CisKICAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxp c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAg ICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0g ICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAoICFzICkKKyAgICAgICAgZ290byBvdXQ7CiAK LSAgICAgICAgaWYgKCBzLT5pZCA9PSBpZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVj dCByYW5nZXNldCAqcjsKKyAgICBBU1NFUlQoIUlTX0RFRkFVTFQocykpOwogCi0gICAgICAgICAg ICBzd2l0Y2ggKCB0eXBlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgWEVOX0RN T1BfSU9fUkFOR0VfUE9SVDoKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVN T1JZOgotICAgICAgICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6Ci0gICAgICAgICAg ICAgICAgciA9IHMtPnJhbmdlW3R5cGVdOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHN3 aXRjaCAoIHR5cGUgKQorICAgIHsKKyAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6Cisg ICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9NRU1PUlk6CisgICAgY2FzZSBYRU5fRE1PUF9JT19S QU5HRV9QQ0k6CisgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKKyAgICAgICAgYnJlYWs7CiAK LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgciA9IE5VTEw7Ci0gICAgICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgciA9 IE5VTEw7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICAgICAgcmMgPSAtRUlOVkFM OwotICAgICAgICAgICAgaWYgKCAhciApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMg PSAtRUlOVkFMOworICAgIGlmICggIXIgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAg ICAgcmMgPSAtRU5PRU5UOwotICAgICAgICAgICAgaWYgKCAhcmFuZ2VzZXRfY29udGFpbnNfcmFu Z2Uociwgc3RhcnQsIGVuZCkgKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVO T0VOVDsKKyAgICBpZiAoICFyYW5nZXNldF9jb250YWluc19yYW5nZShyLCBzdGFydCwgZW5kKSAp CisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgICAgICByYyA9IHJhbmdlc2V0X3JlbW92ZV9y YW5nZShyLCBzdGFydCwgZW5kKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg fQorICAgIHJjID0gcmFuZ2VzZXRfcmVtb3ZlX3JhbmdlKHIsIHN0YXJ0LCBlbmQpOwogCisgb3V0 OgogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5sb2NrKTsKIAogICAgIHJldHVybiByYzsKQEAgLTkzMSw2ICs5MzEsOSBAQCBpbnQgaHZt X21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRf dCBpZCwKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKICAgICBpbnQgcmM7CiAKKyAg ICBpZiAoIGlkID09IERFRkFVTFRfSU9TRVJWSUQgKQorICAgICAgICByZXR1cm4gLUVPUE5PVFNV UFA7CisKICAgICBpZiAoIHR5cGUgIT0gSFZNTUVNX2lvcmVxX3NlcnZlciApCiAgICAgICAgIHJl dHVybiAtRUlOVkFMOwogCkBAIC05MzksMTkgKzk0MiwxNCBAQCBpbnQgaHZtX21hcF9tZW1fdHlw ZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKIAogICAg IHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9j ayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy Lmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAg ICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciAp Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7 CiAKLSAgICAgICAgaWYgKCBzLT5pZCA9PSBpZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJj ID0gcDJtX3NldF9pb3JlcV9zZXJ2ZXIoZCwgZmxhZ3MsIHMpOwotICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgIH0KKyAgICBpZiAoICFzICkKKyAgICAgICAgcmMgPSAtRU5PRU5UOworICAgIGVs c2UKKyAgICB7CisgICAgICAgIEFTU0VSVCghSVNfREVGQVVMVChzKSk7CisgICAgICAgIHJjID0g cDJtX3NldF9pb3JlcV9zZXJ2ZXIoZCwgZmxhZ3MsIHMpOwogICAgIH0KIAogICAgIHNwaW5fdW5s b2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKQEAg LTk3MCwzOCArOTY4LDM0IEBAIGludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihz dHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogaW50IGh2bV9zZXRfaW9yZXFfc2VydmVy X3N0YXRlKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBlbmFibGVkKQogewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVu dHJ5OworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwogICAgIGludCByYzsKIAorICAg IGlmICggaWQgPT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKKwogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9z ZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaCAoIGVu dHJ5LAotICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZl ci5saXN0ICkKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0gbGlz dF9lbnRyeShlbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSk7CisgICAgcyA9IGdldF9pb3JlcV9z ZXJ2ZXIoZCwgaWQpOwogCi0gICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVm YXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAgICAgY29udGludWU7CisgICAgcmMgPSAtRU5P RU5UOworICAgIGlmICggIXMgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICBpZiAoIHMt PmlkICE9IGlkICkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIEFTU0VSVCghSVNfREVGQVVM VChzKSk7CiAKLSAgICAgICAgZG9tYWluX3BhdXNlKGQpOworICAgIGRvbWFpbl9wYXVzZShkKTsK IAotICAgICAgICBpZiAoIGVuYWJsZWQgKQotICAgICAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9l bmFibGUocywgZmFsc2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBodm1faW9yZXFfc2Vy dmVyX2Rpc2FibGUocywgZmFsc2UpOworICAgIGlmICggZW5hYmxlZCApCisgICAgICAgIGh2bV9p b3JlcV9zZXJ2ZXJfZW5hYmxlKHMpOworICAgIGVsc2UKKyAgICAgICAgaHZtX2lvcmVxX3NlcnZl cl9kaXNhYmxlKHMpOwogCi0gICAgICAgIGRvbWFpbl91bnBhdXNlKGQpOworICAgIGRvbWFpbl91 bnBhdXNlKGQpOwogCi0gICAgICAgIHJjID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAg IHJjID0gMDsKIAorIG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtMTAwOSwx NyArMTAwMywxNCBAQCBpbnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoc3RydWN0IGRvbWFp biAqZCwgaW9zZXJ2aWRfdCBpZCwKIGludCBodm1fYWxsX2lvcmVxX3NlcnZlcnNfYWRkX3ZjcHUo c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnM7CisgICAgdW5zaWduZWQgaW50IGlkOwogICAgIGludCByYzsKIAogICAgIHNw aW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7 CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlk LCBzKQogICAgIHsKLSAgICAgICAgYm9vbCBpc19kZWZhdWx0ID0gKHMgPT0gZC0+YXJjaC5odm1f ZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyKTsKLQotICAgICAgICByYyA9IGh2bV9pb3JlcV9z ZXJ2ZXJfYWRkX3ZjcHUocywgaXNfZGVmYXVsdCwgdik7CisgICAgICAgIHJjID0gaHZtX2lvcmVx X3NlcnZlcl9hZGRfdmNwdShzLCB2KTsKICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAgICBn b3RvIGZhaWw7CiAgICAgfQpAQCAtMTAyOSwxMCArMTAyMCwxNSBAQCBpbnQgaHZtX2FsbF9pb3Jl cV9zZXJ2ZXJzX2FkZF92Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogICAg IHJldHVybiAwOwogCiAgZmFpbDoKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlz dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgd2hpbGUgKCBp ZC0tICE9IDAgKQorICAgIHsKKyAgICAgICAgcyA9IEdFVF9JT1JFUV9TRVJWRVIoZCwgaWQpOwor CisgICAgICAgIGlmICggIXMgKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaHZt X2lvcmVxX3NlcnZlcl9yZW1vdmVfdmNwdShzLCB2KTsKKyAgICB9CiAKICAgICBzcGluX3VubG9j a19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKQEAg LTEwNDIsMTIgKzEwMzgsMTEgQEAgaW50IGh2bV9hbGxfaW9yZXFfc2VydmVyc19hZGRfdmNwdShz dHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdikKIHZvaWQgaHZtX2FsbF9pb3JlcV9zZXJ2 ZXJzX3JlbW92ZV92Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogewogICAg IHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpZDsKIAogICAg IHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9j ayk7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQs IGlkLCBzKQogICAgICAgICBodm1faW9yZXFfc2VydmVyX3JlbW92ZV92Y3B1KHMsIHYpOwogCiAg ICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmxvY2spOwpAQCAtMTA1NSwyOCArMTA1MCwxOSBAQCB2b2lkIGh2bV9hbGxfaW9yZXFfc2VydmVy c19yZW1vdmVfdmNwdShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdikKIAogdm9pZCBo dm1fZGVzdHJveV9hbGxfaW9yZXFfc2VydmVycyhzdHJ1Y3QgZG9tYWluICpkKQogewotICAgIHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCAqbmV4dDsKKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqczsKKyAgICB1bnNpZ25lZCBpbnQgaWQ7CiAKICAgICBzcGluX2xvY2tfcmVjdXJzaXZl KCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgLyogTm8gbmVl ZCB0byBkb21haW5fcGF1c2UoKSBhcyB0aGUgZG9tYWluIGlzIGJlaW5nIHRvcm4gZG93biAqLwog Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlICggcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNo Lmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQog ICAgIHsKLSAgICAgICAgYm9vbCBpc19kZWZhdWx0ID0gKHMgPT0gZC0+YXJjaC5odm1fZG9tYWlu LmRlZmF1bHRfaW9yZXFfc2VydmVyKTsKLQotICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2Fi bGUocywgaXNfZGVmYXVsdCk7Ci0KLSAgICAgICAgaWYgKCBpc19kZWZhdWx0ICkKLSAgICAgICAg ICAgIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciA9IE5VTEw7Ci0KLSAg ICAgICAgbGlzdF9kZWwoJnMtPmxpc3RfZW50cnkpOwotCi0gICAgICAgIGh2bV9pb3JlcV9zZXJ2 ZXJfZGVpbml0KHMsIGlzX2RlZmF1bHQpOworICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2Fi bGUocyk7CisgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGVpbml0KHMpOwogCisgICAgICAgIHNl dF9pb3JlcV9zZXJ2ZXIoZCwgaWQsIE5VTEwpOwogICAgICAgICB4ZnJlZShzKTsKICAgICB9CiAK QEAgLTExMTEsNyArMTA5Nyw3IEBAIGludCBodm1fc2V0X2RtX2RvbWFpbihzdHJ1Y3QgZG9tYWlu ICpkLCBkb21pZF90IGRvbWlkKQogICAgICAqIHN0aWxsIGJlIHNldCBhbmQgdGh1cywgd2hlbiB0 aGUgc2VydmVyIGlzIGNyZWF0ZWQsIGl0IHdpbGwgaGF2ZQogICAgICAqIHRoZSBjb3JyZWN0IGRv bWlkLgogICAgICAqLwotICAgIHMgPSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9z ZXJ2ZXI7CisgICAgcyA9IEdFVF9JT1JFUV9TRVJWRVIoZCwgREVGQVVMVF9JT1NFUlZJRCk7CiAg ICAgaWYgKCAhcyApCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTE2NCwxMiArMTE1MCwxMCBA QCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0 IGRvbWFpbiAqZCwKICAgICB1aW50MzJfdCBjZjg7CiAgICAgdWludDhfdCB0eXBlOwogICAgIHVp bnQ2NF90IGFkZHI7Ci0KLSAgICBpZiAoIGxpc3RfZW1wdHkoJmQtPmFyY2guaHZtX2RvbWFpbi5p b3JlcV9zZXJ2ZXIubGlzdCkgKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB1bnNpZ25lZCBp bnQgaWQ7CiAKICAgICBpZiAoIHAtPnR5cGUgIT0gSU9SRVFfVFlQRV9DT1BZICYmIHAtPnR5cGUg IT0gSU9SRVFfVFlQRV9QSU8gKQotICAgICAgICByZXR1cm4gZC0+YXJjaC5odm1fZG9tYWluLmRl ZmF1bHRfaW9yZXFfc2VydmVyOworICAgICAgICByZXR1cm4gR0VUX0lPUkVRX1NFUlZFUihkLCBE RUZBVUxUX0lPU0VSVklEKTsKIAogICAgIGNmOCA9IGQtPmFyY2guaHZtX2RvbWFpbi5wY2lfY2Y4 OwogCkBAIC0xMjA5LDE2ICsxMTkzLDExIEBAIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpodm1f c2VsZWN0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBhZGRyID0gcC0+ YWRkcjsKICAgICB9CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFf U0VSVkVSKGQsIGlkLCBzKQogICAgIHsKICAgICAgICAgc3RydWN0IHJhbmdlc2V0ICpyOwogCi0g ICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIg KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKCAhcy0+ZW5hYmxlZCApCisg ICAgICAgIGlmICggSVNfREVGQVVMVChzKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg ICAgICByID0gcy0+cmFuZ2VbdHlwZV07CkBAIC0xMjUxLDcgKzEyMzAsNyBAQCBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwK ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVs dF9pb3JlcV9zZXJ2ZXI7CisgICAgcmV0dXJuIEdFVF9JT1JFUV9TRVJWRVIoZCwgREVGQVVMVF9J T1NFUlZJRCk7CiB9CiAKIHN0YXRpYyBpbnQgaHZtX3NlbmRfYnVmZmVyZWRfaW9yZXEoc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGlvcmVxX3QgKnApCkBAIC0xNDEwLDEzICsxMzg5LDEzIEBA IHVuc2lnbmVkIGludCBodm1fYnJvYWRjYXN0X2lvcmVxKGlvcmVxX3QgKnAsIGJvb2wgYnVmZmVy ZWQpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFpbjsKICAgICBzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKLSAgICB1bnNpZ25lZCBpbnQgZmFpbGVkID0gMDsKKyAg ICB1bnNpZ25lZCBpbnQgaWQsIGZhaWxlZCA9IDA7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisg ICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQorICAgIHsKICAgICAgICAgaWYgKCBo dm1fc2VuZF9pb3JlcShzLCBwLCBidWZmZXJlZCkgPT0gWDg2RU1VTF9VTkhBTkRMRUFCTEUgKQog ICAgICAgICAgICAgZmFpbGVkKys7CisgICAgfQogCiAgICAgcmV0dXJuIGZhaWxlZDsKIH0KQEAg LTE0MzYsNyArMTQxNSw2IEBAIHN0YXRpYyBpbnQgaHZtX2FjY2Vzc19jZjgoCiB2b2lkIGh2bV9p b3JlcV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7Ci0gICAgSU5JVF9MSVNUX0hFQUQoJmQt PmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCk7CiAKICAgICByZWdpc3Rlcl9wb3J0 aW9faGFuZGxlcihkLCAweGNmOCwgNCwgaHZtX2FjY2Vzc19jZjgpOwogfQpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS9kb21haW4uaAppbmRleCA3ZjEyOGMwNWZmLi5lMTdiYmU0MDA0IDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS9kb21haW4uaApAQCAtNjAsNyArNjAsNiBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciB7CiAK ICAgICAvKiBEb21haW4gaWQgb2YgZW11bGF0aW5nIGRvbWFpbiAqLwogICAgIGRvbWlkX3QgICAg ICAgICAgICAgICAgZG9taWQ7Ci0gICAgaW9zZXJ2aWRfdCAgICAgICAgICAgICBpZDsKICAgICBz dHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgIGlvcmVxOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAg aW9yZXFfdmNwdV9saXN0OwogICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAgYnVmaW9yZXE7CkBA IC0xMDAsNiArOTksOSBAQCBzdHJ1Y3QgaHZtX3BpX29wcyB7CiAgICAgdm9pZCAoKmRvX3Jlc3Vt ZSkoc3RydWN0IHZjcHUgKnYpOwogfTsKIAorI2RlZmluZSBNQVhfTlJfSU9SRVFfU0VSVkVSUyA4 CisjZGVmaW5lIERFRkFVTFRfSU9TRVJWSUQgMAorCiBzdHJ1Y3QgaHZtX2RvbWFpbiB7CiAgICAg LyogR3Vlc3QgcGFnZSByYW5nZSB1c2VkIGZvciBub24tZGVmYXVsdCBpb3JlcSBzZXJ2ZXJzICov CiAgICAgc3RydWN0IHsKQEAgLTEwOSwxMSArMTExLDkgQEAgc3RydWN0IGh2bV9kb21haW4gewog CiAgICAgLyogTG9jayBwcm90ZWN0cyBhbGwgb3RoZXIgdmFsdWVzIGluIHRoZSBzdWItc3RydWN0 IGFuZCB0aGUgZGVmYXVsdCAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIHNwaW5sb2NrX3QgICAg ICAgbG9jazsKLSAgICAgICAgaW9zZXJ2aWRfdCAgICAgICBpZDsKLSAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBsaXN0OworICAgICAgICBzcGlubG9ja190ICAgICAgICAgICAgICBsb2NrOworICAg ICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqc2VydmVyW01BWF9OUl9JT1JFUV9TRVJWRVJT XTsKICAgICB9IGlvcmVxX3NlcnZlcjsKLSAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqZGVm YXVsdF9pb3JlcV9zZXJ2ZXI7CiAKICAgICAvKiBDYWNoZWQgQ0Y4IGZvciBndWVzdCBQQ0kgY29u ZmlnIGN5Y2xlcyAqLwogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHBjaV9jZjg7Ci0tIAoy LjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK