From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 08/12] x86/hvm/ioreq: maintain an array of ioreq servers rather than a list Date: Tue, 5 Sep 2017 12:37:12 +0100 Message-ID: <20170905113716.3960-9-paul.durrant@citrix.com> References: <20170905113716.3960-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpCAW-0007Nt-PZ for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 11:37:24 +0000 In-Reply-To: <20170905113716.3960-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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org QSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgcmVtb3ZlIHRoZSBjdXJyZW50IGltcGxpY2l0IGxpbWl0 YXRpb24gb24gY3JlYXRpb24Kb2YgaW9yZXEgc2VydmVycyB3aGljaCBpcyBkdWUgdG8gdGhlIGFs bG9jYXRpb24gb2YgZ2ZucyBmb3IgdGhlIGlvcmVxCnN0cnVjdHVyZXMgYW5kIGJ1ZmZlcmVkIGlv cmVxIHJpbmcuCgpJdCB3aWxsIHRoZXJlZm9yZSBiZSBuZWNlc3NhcnkgdG8gaW50cm9kdWNlIGFu IGV4cGxpY2l0IGxpbWl0IGFuZCwgc2luY2UKdGhpcyBsaW1pdCBzaG91bGQgYmUgc21hbGwsIGl0 IHNpbXBsaWZpZXMgdGhlIGNvZGUgdG8gbWFpbnRhaW4gYW4gYXJyYXkgb2YKdGhhdCBzaXplIHJh dGhlciB0aGFuIHVzaW5nIGEgbGlzdC4KCkFsc28sIGJ5IHJlc2VydmluZyBhbiBhcnJheSBzbG90 IGZvciB0aGUgZGVmYXVsdCBzZXJ2ZXIgYW5kIHBvcHVsYXRpbmcKYXJyYXkgc2xvdHMgZWFybHkg aW4gY3JlYXRlLCB0aGUgbmVlZCB0byBwYXNzIGFuICdpc19kZWZhdWx0JyBib29sZWFuCnRvIHN1 Yi1mdW5jdGlvbnMgY2FuIGJlIGF2b2lkZWQuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQg PHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cgp2 NDoKIC0gSW50cm9kdWNlZCBtb3JlIGhlbHBlciBtYWNyb3MgYW5kIHJlbG9jYXRlZCB0aGVtIHRv IHRoZSB0b3Agb2YgdGhlCiAgIGNvZGUuCgp2MzoKIC0gTmV3IHBhdGNoIChyZXBsYWNpbmcgIm1v dmUgaXNfZGVmYXVsdCBpbnRvIHN0cnVjdCBodm1faW9yZXFfc2VydmVyIikgaW4KICAgcmVzcG9u c2UgdG8gcmV2aWV3IGNvbW1lbnRzLgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAg ICAgIHwgNDkxICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggfCAgMTEgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjM1 IGluc2VydGlvbnMoKyksIDI2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggZjJlMGIzZjc0 YS4uMjg3NTcyYmQxZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAtMzMsNiArMzMsMjIgQEAKIAogI2luY2x1ZGUg PHB1YmxpYy9odm0vaW9yZXEuaD4KIAorI2RlZmluZSBTRVRfSU9SRVFfU0VSVkVSKGQsIGlkLCBz KSBcCisgICAgKGQpLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLnNlcnZlcltpZF0gPSAo cykKKworI2RlZmluZSBHRVRfSU9SRVFfU0VSVkVSKGQsIGlkKSBcCisgICAgKCgoaWQpIDwgTUFY X05SX0lPUkVRX1NFUlZFUlMpID8gXAorICAgICAoZCktPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9z ZXJ2ZXIuc2VydmVyW2lkXSA6IFwKKyAgICAgTlVMTCkKKworI2RlZmluZSBGT1JfRUFDSF9JT1JF UV9TRVJWRVIoZCwgaWQsIHMpIFwKKyAgICBmb3IgKCAoaWQpID0gMCwgKHMpID0gR0VUX0lPUkVR X1NFUlZFUigoZCksIChpZCkpOyBcCisgICAgICAgICAgKGlkKSA8IE1BWF9OUl9JT1JFUV9TRVJW RVJTOyBcCisgICAgICAgICAgKGlkKSsrLCAocykgPSBHRVRfSU9SRVFfU0VSVkVSKChkKSwgKGlk KSkgKQorCisjZGVmaW5lIElTX0RFRkFVTFQocykgXAorICAgICgocykgPT0gR0VUX0lPUkVRX1NF UlZFUigocyktPmRvbWFpbiwgREVGQVVMVF9JT1NFUlZJRCkpCisKIHN0YXRpYyBpb3JlcV90ICpn ZXRfaW9yZXEoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIHN0cnVjdCB2Y3B1ICp2KQogewog ICAgIHNoYXJlZF9pb3BhZ2VfdCAqcCA9IHMtPmlvcmVxLnZhOwpAQCAtNDcsMTMgKzYzLDE1IEBA IGJvb2wgaHZtX2lvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IGRvbWFp biAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKyAgICB1 bnNpZ25lZCBpbnQgaWQ7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9S RVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsKICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV92Y3B1 ICpzdjsKIAorICAgICAgICBpZiAoICFzICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAg ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZzLT5pb3JlcV92Y3B1X2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aXN0X2VudHJ5ICkKQEAgLTEyNywxMyArMTQ1LDE1IEBAIGJvb2wgaGFuZGxlX2h2bV9pb19jb21w bGV0aW9uKHN0cnVjdCB2Y3B1ICp2KQogICAgIHN0cnVjdCBodm1fdmNwdV9pbyAqdmlvID0gJnYt PmFyY2guaHZtX3ZjcHUuaHZtX2lvOwogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwog ICAgIGVudW0gaHZtX2lvX2NvbXBsZXRpb24gaW9fY29tcGxldGlvbjsKKyAgICB1bnNpZ25lZCBp bnQgaWQ7CiAKLSAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICBGT1JfRUFDSF9JT1JFUV9TRVJW RVIoZCwgaWQsIHMpCiAgICAgewogICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3ZjcHUgKnN2Owog CisgICAgICAgIGlmICggIXMgKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeSAoIHN2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnMt PmlvcmVxX3ZjcHVfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50 cnkgKQpAQCAtMjQzLDE0ICsyNjMsMTYgQEAgc3RhdGljIGludCBodm1fbWFwX2lvcmVxX3BhZ2Uo CiBib29sIGlzX2lvcmVxX3NlcnZlcl9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVj dCBwYWdlX2luZm8gKnBhZ2UpCiB7CiAgICAgY29uc3Qgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnM7CisgICAgdW5zaWduZWQgaW50IGlkOwogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKIAogICAg IHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9j ayk7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQs IGlkLCBzKQogICAgIHsKKyAgICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250aW51ZTsK KwogICAgICAgICBpZiAoIChzLT5pb3JlcS52YSAmJiBzLT5pb3JlcS5wYWdlID09IHBhZ2UpIHx8 CiAgICAgICAgICAgICAgKHMtPmJ1ZmlvcmVxLnZhICYmIHMtPmJ1ZmlvcmVxLnBhZ2UgPT0gcGFn ZSkgKQogICAgICAgICB7CkBAIC0zMDEsOCArMzIzLDkgQEAgc3RhdGljIHZvaWQgaHZtX3VwZGF0 ZV9pb3JlcV9ldnRjaG4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgfQogfQogCisK IHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2Rl ZmF1bHQsIHN0cnVjdCB2Y3B1ICp2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBodm1faW9yZXFfdmNwdSAqc3Y7CiAg ICAgaW50IHJjOwpAQCAtMzMxLDcgKzM1NCw3IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZl cl9hZGRfdmNwdShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICAgICAgICAgIGdvdG8g ZmFpbDM7CiAKICAgICAgICAgcy0+YnVmaW9yZXFfZXZ0Y2huID0gcmM7Ci0gICAgICAgIGlmICgg aXNfZGVmYXVsdCApCisgICAgICAgIGlmICggSVNfREVGQVVMVChzKSApCiAgICAgICAgICAgICBk LT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9CVUZJT1JFUV9FVlRDSE5dID0KICAg ICAgICAgICAgICAgICBzLT5idWZpb3JlcV9ldnRjaG47CiAgICAgfQpAQCAtNDMxLDcgKzQ1NCw2 IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsCiB9CiAKIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9zZXR1cF9wYWdl cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGlzX2RlZmF1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVfYnVmaW9yZXEpCiB7CiAgICAgc3RydWN0IGRvbWFp biAqZCA9IHMtPmRvbWFpbjsKQEAgLTQzOSw3ICs0NjEsNyBAQCBzdGF0aWMgaW50IGh2bV9pb3Jl cV9zZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgdW5z aWduZWQgbG9uZyBidWZpb3JlcV9nZm4gPSBnZm5feChJTlZBTElEX0dGTik7CiAgICAgaW50IHJj OwogCi0gICAgaWYgKCBpc19kZWZhdWx0ICkKKyAgICBpZiAoIElTX0RFRkFVTFQocykgKQogICAg IHsKICAgICAgICAgLyoKICAgICAgICAgICogVGhlIGRlZmF1bHQgaW9yZXEgc2VydmVyIG11c3Qg aGFuZGxlIGJ1ZmZlcmVkIGlvcmVxcywgZm9yCkBAIC00NjgsOCArNDkwLDcgQEAgc3RhdGljIGlu dCBodm1faW9yZXFfc2VydmVyX3NldHVwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz LAogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl91bm1h cF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZhdWx0KQorc3RhdGljIHZvaWQgaHZtX2lv cmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKIHsKICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gcy0+ZG9tYWluOwogICAgIGJvb2wgaGFuZGxlX2J1ZmlvcmVx ID0gISFzLT5idWZpb3JlcS52YTsKQEAgLTQ3OSw3ICs1MDAsNyBAQCBzdGF0aWMgdm9pZCBodm1f aW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogCiAg ICAgaHZtX3VubWFwX2lvcmVxX3BhZ2UocywgZmFsc2UpOwogCi0gICAgaWYgKCAhaXNfZGVmYXVs dCApCisgICAgaWYgKCAhSVNfREVGQVVMVChzKSApCiAgICAgewogICAgICAgICBpZiAoIGhhbmRs ZV9idWZpb3JlcSApCiAgICAgICAgICAgICBodm1fZnJlZV9pb3JlcV9nZm4oZCwgcy0+YnVmaW9y ZXEuZ2ZuKTsKQEAgLTQ4OCwxMiArNTA5LDExIEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2 ZXJfdW5tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgfQogfQogCi1z dGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIGlzX2RlZmF1bHQpCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFu Z2VzZXRzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewogICAgIHVuc2lnbmVkIGludCBp OwogCi0gICAgaWYgKCBpc19kZWZhdWx0ICkKKyAgICBpZiAoIElTX0RFRkFVTFQocykgKQogICAg ICAgICByZXR1cm47CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IE5SX0lPX1JBTkdFX1RZUEVTOyBp KysgKQpAQCAtNTAxLDE5ICs1MjEsMTkgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9m cmVlX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIH0KIAogc3RhdGljIGlu dCBodm1faW9yZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp c19kZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp b3NlcnZpZF90IGlkKQogewogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGludCByYzsKIAotICAg IGlmICggaXNfZGVmYXVsdCApCisgICAgaWYgKCBJU19ERUZBVUxUKHMpICkKICAgICAgICAgZ290 byBkb25lOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBOUl9JT19SQU5HRV9UWVBFUzsgaSsrICkK ICAgICB7CiAgICAgICAgIGNoYXIgKm5hbWU7CiAKLSAgICAgICAgcmMgPSBhc3ByaW50ZigmbmFt ZSwgImlvcmVxX3NlcnZlciAlZCAlcyIsIHMtPmlkLAorICAgICAgICByYyA9IGFzcHJpbnRmKCZu YW1lLCAiaW9yZXFfc2VydmVyICVkICVzIiwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgKGkg PT0gWEVOX0RNT1BfSU9fUkFOR0VfUE9SVCkgPyAicG9ydCIgOgogICAgICAgICAgICAgICAgICAg ICAgIChpID09IFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWSkgPyAibWVtb3J5IiA6CiAgICAgICAg ICAgICAgICAgICAgICAgKGkgPT0gWEVOX0RNT1BfSU9fUkFOR0VfUENJKSA/ICJwY2kiIDoKQEAg LTUzNywxMyArNTU3LDEyIEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19yYW5n ZXNldHMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgcmV0dXJuIDA7CiAKICBmYWls OgotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocywgZmFsc2UpOworICAgIGh2 bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocyk7CiAKICAgICByZXR1cm4gcmM7CiB9CiAK LXN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZh dWx0KQorc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9lbmFibGUoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFpbjsKICAgICBz dHJ1Y3QgaHZtX2lvcmVxX3ZjcHUgKnN2OwpAQCAtNTU0LDcgKzU3Myw3IEBAIHN0YXRpYyB2b2lk IGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogICAg IGlmICggcy0+ZW5hYmxlZCApCiAgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIGlmICggIWlzX2Rl ZmF1bHQgKQorICAgIGlmICggIUlTX0RFRkFVTFQocykgKQogICAgIHsKICAgICAgICAgaHZtX3Jl bW92ZV9pb3JlcV9nZm4oZCwgJnMtPmlvcmVxKTsKIApAQCAtNTczLDggKzU5Miw3IEBAIHN0YXRp YyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz LAogICAgIHNwaW5fdW5sb2NrKCZzLT5sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgaHZtX2lvcmVx X3NlcnZlcl9kaXNhYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lkIGh2 bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKIHsKICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gcy0+ZG9tYWluOwogICAgIGJvb2wgaGFuZGxlX2J1ZmlvcmVx ID0gISFzLT5idWZpb3JlcS52YTsKQEAgLTU4NCw3ICs2MDIsNyBAQCBzdGF0aWMgdm9pZCBodm1f aW9yZXFfc2VydmVyX2Rpc2FibGUoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgaWYg KCAhcy0+ZW5hYmxlZCApCiAgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIGlmICggIWlzX2RlZmF1 bHQgKQorICAgIGlmICggIUlTX0RFRkFVTFQocykgKQogICAgIHsKICAgICAgICAgaWYgKCBoYW5k bGVfYnVmaW9yZXEgKQogICAgICAgICAgICAgaHZtX2FkZF9pb3JlcV9nZm4oZCwgJnMtPmJ1Zmlv cmVxKTsKQEAgLTYwMCwxMyArNjE4LDExIEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJf ZGlzYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIAogc3RhdGljIGludCBodm1faW9y ZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90IGRvbWlkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZhdWx0LCBpbnQgYnVmaW9y ZXFfaGFuZGxpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90 IGlkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmlvcmVxX2hhbmRs aW5nLCBpb3NlcnZpZF90IGlkKQogewogICAgIHN0cnVjdCB2Y3B1ICp2OwogICAgIGludCByYzsK IAotICAgIHMtPmlkID0gaWQ7CiAgICAgcy0+ZG9tYWluID0gZDsKICAgICBzLT5kb21pZCA9IGRv bWlkOwogCkBAIC02MTQsNyArNjMwLDcgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2lu aXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgSU5JVF9MSVNUX0hFQUQoJnMtPmlv cmVxX3ZjcHVfbGlzdCk7CiAgICAgc3Bpbl9sb2NrX2luaXQoJnMtPmJ1ZmlvcmVxX2xvY2spOwog Ci0gICAgcmMgPSBodm1faW9yZXFfc2VydmVyX2FsbG9jX3Jhbmdlc2V0cyhzLCBpc19kZWZhdWx0 KTsKKyAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcmFuZ2VzZXRzKHMsIGlkKTsKICAg ICBpZiAoIHJjICkKICAgICAgICAgcmV0dXJuIHJjOwogCkBAIC02MjIsMTMgKzYzOCwxMyBAQCBz dGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfaW5pdChzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAq cywKICAgICAgICAgcy0+YnVmaW9yZXFfYXRvbWljID0gdHJ1ZTsKIAogICAgIHJjID0gaHZtX2lv cmVxX3NlcnZlcl9zZXR1cF9wYWdlcygKLSAgICAgICAgICAgICBzLCBpc19kZWZhdWx0LCBidWZp b3JlcV9oYW5kbGluZyAhPSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfT0ZGKTsKKyAgICAgICAgICAg ICBzLCBidWZpb3JlcV9oYW5kbGluZyAhPSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfT0ZGKTsKICAg ICBpZiAoIHJjICkKICAgICAgICAgZ290byBmYWlsX21hcDsKIAogICAgIGZvcl9lYWNoX3ZjcHUg KCBkLCB2ICkKICAgICB7Ci0gICAgICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShz LCBpc19kZWZhdWx0LCB2KTsKKyAgICAgICAgcmMgPSBodm1faW9yZXFfc2VydmVyX2FkZF92Y3B1 KHMsIHYpOwogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgIGdvdG8gZmFpbF9hZGQ7CiAg ICAgfQpAQCAtNjM3LDQ3ICs2NTMsMjAgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2lu aXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAKICBmYWlsX2FkZDoKICAgICBodm1faW9y ZXFfc2VydmVyX3JlbW92ZV9hbGxfdmNwdXMocyk7Ci0gICAgaHZtX2lvcmVxX3NlcnZlcl91bm1h cF9wYWdlcyhzLCBpc19kZWZhdWx0KTsKKyAgICBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2Vz KHMpOwogCiAgZmFpbF9tYXA6Ci0gICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhz LCBpc19kZWZhdWx0KTsKKyAgICBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHMpOwog CiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5p dChzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJf ZGVpbml0KHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewogICAgIEFTU0VSVCghcy0+ZW5h YmxlZCk7CiAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVzKHMpOwotICAgIGh2 bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMocywgaXNfZGVmYXVsdCk7Ci0gICAgaHZtX2lvcmVx X3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzLCBpc19kZWZhdWx0KTsKLX0KLQotc3RhdGljIGlvc2Vy dmlkX3QgbmV4dF9pb3NlcnZpZChzdHJ1Y3QgZG9tYWluICpkKQotewotICAgIHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzOwotICAgIGlvc2VydmlkX3QgaWQ7Ci0KLSAgICBBU1NFUlQoc3Bpbl9p c19sb2NrZWQoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jaykpOwotCi0gICAg aWQgPSBkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmlkOwotCi0gYWdhaW46Ci0gICAg aWQrKzsKLQotICAgIC8qIENoZWNrIGZvciB1bmlxdWVuZXNzICovCi0gICAgbGlzdF9mb3JfZWFj aF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21h aW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50 cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBpZCA9PSBzLT5pZCApCi0gICAgICAgICAgICBnb3Rv IGFnYWluOwotICAgIH0KLQotICAgIGQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuaWQg PSBpZDsKLQotICAgIHJldHVybiBpZDsKKyAgICBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2Vz KHMpOworICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocyk7CiB9CiAKIGludCBo dm1fY3JlYXRlX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90IGRvbWlkLApA QCAtNjg1LDUyICs2NzQsNjcgQEAgaW50IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIGRvbWlkX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9z ZXJ2aWRfdCAqaWQpCiB7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgdW5z aWduZWQgaW50IGk7CiAgICAgaW50IHJjOwogCiAgICAgaWYgKCBidWZpb3JlcV9oYW5kbGluZyA+ IEhWTV9JT1JFUVNSVl9CVUZJT1JFUV9BVE9NSUMgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsK IAotICAgIHJjID0gLUVOT01FTTsKICAgICBzID0geHphbGxvYyhzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlcik7CiAgICAgaWYgKCAhcyApCi0gICAgICAgIGdvdG8gZmFpbDE7CisgICAgICAgIHJldHVy biAtRU5PTUVNOwogCiAgICAgZG9tYWluX3BhdXNlKGQpOwogICAgIHNwaW5fbG9ja19yZWN1cnNp dmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1F RVhJU1Q7Ci0gICAgaWYgKCBpc19kZWZhdWx0ICYmIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0 X2lvcmVxX3NlcnZlciAhPSBOVUxMICkKLSAgICAgICAgZ290byBmYWlsMjsKLQotICAgIHJjID0g aHZtX2lvcmVxX3NlcnZlcl9pbml0KHMsIGQsIGRvbWlkLCBpc19kZWZhdWx0LCBidWZpb3JlcV9o YW5kbGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2lvc2VydmlkKGQp KTsKLSAgICBpZiAoIHJjICkKLSAgICAgICAgZ290byBmYWlsMzsKLQotICAgIGxpc3RfYWRkKCZz LT5saXN0X2VudHJ5LAotICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2Vy dmVyLmxpc3QpOwotCiAgICAgaWYgKCBpc19kZWZhdWx0ICkKICAgICB7Ci0gICAgICAgIGQtPmFy Y2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciA9IHM7Ci0gICAgICAgIGh2bV9pb3Jl cV9zZXJ2ZXJfZW5hYmxlKHMsIHRydWUpOworICAgICAgICBpID0gREVGQVVMVF9JT1NFUlZJRDsK KworICAgICAgICByYyA9IC1FRVhJU1Q7CisgICAgICAgIGlmICggR0VUX0lPUkVRX1NFUlZFUihk LCBpKSApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg ICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX05SX0lPUkVRX1NFUlZFUlM7IGkrKyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGlmICggaSAhPSBERUZBVUxUX0lPU0VSVklEICYmCisgICAgICAg ICAgICAgICAgICFHRVRfSU9SRVFfU0VSVkVSKGQsIGkpICkKKyAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gLUVOT1NQQzsKKyAgICAgICAgaWYgKCBpID49 IE1BWF9OUl9JT1JFUV9TRVJWRVJTICkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAK KyAgICBTRVRfSU9SRVFfU0VSVkVSKGQsIGksIHMpOworCisgICAgcmMgPSBodm1faW9yZXFfc2Vy dmVyX2luaXQocywgZCwgZG9taWQsIGJ1ZmlvcmVxX2hhbmRsaW5nLCBpKTsKKyAgICBpZiAoIHJj ICkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKCBJU19ERUZBVUxUKHMpICkKKyAgICAg ICAgaHZtX2lvcmVxX3NlcnZlcl9lbmFibGUocyk7CisKICAgICBpZiAoIGlkICkKLSAgICAgICAg KmlkID0gcy0+aWQ7CisgICAgICAgICppZCA9IGk7CisKKyAgICBkLT5hcmNoLmh2bV9kb21haW4u aW9yZXFfc2VydmVyLmNvdW50Kys7CiAKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAgICAgZG9tYWluX3VucGF1c2UoZCk7 CiAKICAgICByZXR1cm4gMDsKIAotIGZhaWwzOgotIGZhaWwyOgorIGZhaWw6CisgICAgU0VUX0lP UkVRX1NFUlZFUihkLCBpLCBOVUxMKTsKKwogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+ YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKICAgICBkb21haW5fdW5wYXVzZShk KTsKIAogICAgIHhmcmVlKHMpOwotIGZhaWwxOgogICAgIHJldHVybiByYzsKIH0KIApAQCAtNzQx LDM1ICs3NDUsMzAgQEAgaW50IGh2bV9kZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWlu ICpkLCBpb3NlcnZpZF90IGlkKQogCiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgIHJjID0gLUVOT0VOVDsKLSAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlzdF9lbnRyeSApCi0gICAgewotICAgICAgICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9t YWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHMg PSBHRVRfSU9SRVFfU0VSVkVSKGQsIGlkKTsKIAotICAgICAgICBpZiAoIHMtPmlkICE9IGlkICkK LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGRvbWFpbl9wYXVzZShkKTsKKyAgICBy YyA9IC1FTk9FTlQ7CisgICAgaWYgKCAhcyB8fCBJU19ERUZBVUxUKHMpICkKKyAgICAgICAgZ290 byBvdXQ7CiAKLSAgICAgICAgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoZCwgMCwgcyk7CisgICAgZG9t YWluX3BhdXNlKGQpOwogCi0gICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzLCBmYWxz ZSk7CisgICAgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoZCwgMCwgcyk7CiAKLSAgICAgICAgbGlzdF9k ZWwoJnMtPmxpc3RfZW50cnkpOworICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzKTsKKyAg ICBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzKTsKIAotICAgICAgICBodm1faW9yZXFfc2VydmVy X2RlaW5pdChzLCBmYWxzZSk7CisgICAgZG9tYWluX3VucGF1c2UoZCk7CiAKLSAgICAgICAgZG9t YWluX3VucGF1c2UoZCk7CisgICAgQVNTRVJUKGQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2 ZXIuY291bnQpOworICAgIC0tZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudDsK IAotICAgICAgICB4ZnJlZShzKTsKKyAgICBTRVRfSU9SRVFfU0VSVkVSKGQsIGlkLCBOVUxMKTsK KyAgICB4ZnJlZShzKTsKIAotICAgICAgICByYyA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K KyAgICByYyA9IDA7CiAKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNo Lmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgcmV0dXJuIHJjOwpAQCAtNzg1 LDI5ICs3ODQsMjMgQEAgaW50IGh2bV9nZXRfaW9yZXFfc2VydmVyX2luZm8oc3RydWN0IGRvbWFp biAqZCwgaW9zZXJ2aWRfdCBpZCwKIAogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAg bGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5h cmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2Rv bWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg ICAgICBpZiAoIHMtPmlkICE9IGlkICkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHMgPSBH RVRfSU9SRVFfU0VSVkVSKGQsIGlkKTsKIAotICAgICAgICAqaW9yZXFfZ2ZuID0gcy0+aW9yZXEu Z2ZuOworICAgIHJjID0gLUVOT0VOVDsKKyAgICBpZiAoICFzIHx8IElTX0RFRkFVTFQocykgKQor ICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICBpZiAoIHMtPmJ1ZmlvcmVxLnZhICE9IE5VTEwg KQotICAgICAgICB7Ci0gICAgICAgICAgICAqYnVmaW9yZXFfZ2ZuID0gcy0+YnVmaW9yZXEuZ2Zu OwotICAgICAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBzLT5idWZpb3JlcV9ldnRjaG47Ci0gICAg ICAgIH0KKyAgICAqaW9yZXFfZ2ZuID0gcy0+aW9yZXEuZ2ZuOwogCi0gICAgICAgIHJjID0gMDsK LSAgICAgICAgYnJlYWs7CisgICAgaWYgKCBzLT5idWZpb3JlcS52YSAhPSBOVUxMICkKKyAgICB7 CisgICAgICAgICpidWZpb3JlcV9nZm4gPSBzLT5idWZpb3JlcS5nZm47CisgICAgICAgICpidWZp b3JlcV9wb3J0ID0gcy0+YnVmaW9yZXFfZXZ0Y2huOwogICAgIH0KIAorICAgIHJjID0gMDsKKwor IG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubG9jayk7CiAKICAgICByZXR1cm4gcmM7CkBAIC04MTgsNDggKzgxMSw0MSBAQCBp bnQgaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9z ZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCBlbmQpCiB7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgc3RydWN0IHJh bmdlc2V0ICpyOwogICAgIGludCByYzsKIAogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0g ICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZk LT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZt X2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAg ICBzID0gR0VUX0lPUkVRX1NFUlZFUihkLCBpZCk7CiAKLSAgICAgICAgaWYgKCBzLT5pZCA9PSBp ZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCByYW5nZXNldCAqcjsKKyAgICByYyA9 IC1FTk9FTlQ7CisgICAgaWYgKCAhcyB8fCBJU19ERUZBVUxUKHMpICkKKyAgICAgICAgZ290byBv dXQ7CiAKLSAgICAgICAgICAgIHN3aXRjaCAoIHR5cGUgKQotICAgICAgICAgICAgewotICAgICAg ICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JUOgotICAgICAgICAgICAgY2FzZSBYRU5f RE1PUF9JT19SQU5HRV9NRU1PUlk6Ci0gICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdF X1BDSToKLSAgICAgICAgICAgICAgICByID0gcy0+cmFuZ2VbdHlwZV07Ci0gICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAgIGNhc2UgWEVOX0RNT1Bf SU9fUkFOR0VfUE9SVDoKKyAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKKyAgICBj YXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BDSToKKyAgICAgICAgciA9IHMtPnJhbmdlW3R5cGVdOwor ICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBy ID0gTlVMTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICBkZWZh dWx0OgorICAgICAgICByID0gTlVMTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAg ICAgICByYyA9IC1FSU5WQUw7Ci0gICAgICAgICAgICBpZiAoICFyICkKLSAgICAgICAgICAgICAg ICBicmVhazsKKyAgICByYyA9IC1FSU5WQUw7CisgICAgaWYgKCAhciApCisgICAgICAgIGdvdG8g b3V0OwogCi0gICAgICAgICAgICByYyA9IC1FRVhJU1Q7Ci0gICAgICAgICAgICBpZiAoIHJhbmdl c2V0X292ZXJsYXBzX3JhbmdlKHIsIHN0YXJ0LCBlbmQpICkKLSAgICAgICAgICAgICAgICBicmVh azsKKyAgICByYyA9IC1FRVhJU1Q7CisgICAgaWYgKCByYW5nZXNldF9vdmVybGFwc19yYW5nZShy LCBzdGFydCwgZW5kKSApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgICAgICByYyA9IHJh bmdlc2V0X2FkZF9yYW5nZShyLCBzdGFydCwgZW5kKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICB9Ci0gICAgfQorICAgIHJjID0gcmFuZ2VzZXRfYWRkX3JhbmdlKHIsIHN0YXJ0LCBlbmQp OwogCisgb3V0OgogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5sb2NrKTsKIAogICAgIHJldHVybiByYzsKQEAgLTg3MCw0OCArODU2LDQx IEBAIGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDY0X3QgZW5kKQogewogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwor ICAgIHN0cnVjdCByYW5nZXNldCAqcjsKICAgICBpbnQgcmM7CiAKICAgICBzcGluX2xvY2tfcmVj dXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCi0gICAgcmMg PSAtRU5PRU5UOwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAgICAgIGlmICggcyA9 PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAgICAg Y29udGludWU7CisgICAgcyA9IEdFVF9JT1JFUV9TRVJWRVIoZCwgaWQpOwogCi0gICAgICAgIGlm ICggcy0+aWQgPT0gaWQgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQg KnI7CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlmICggIXMgfHwgSVNfREVGQVVMVChzKSApCisg ICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgICAgICBzd2l0Y2ggKCB0eXBlICkKLSAgICAgICAg ICAgIHsKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9SVDoKLSAgICAgICAg ICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAgICAgICAgICAgY2FzZSBYRU5f RE1PUF9JT19SQU5HRV9QQ0k6Ci0gICAgICAgICAgICAgICAgciA9IHMtPnJhbmdlW3R5cGVdOwot ICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAoIHR5cGUgKQorICAgIHsKKyAgICBj YXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9N RU1PUlk6CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6CisgICAgICAgIHIgPSBzLT5y YW5nZVt0eXBlXTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg ICAgICAgICAgICAgciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgciA9IE5VTEw7CisgICAgICAgIGJyZWFrOworICAg IH0KIAotICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgaWYgKCAhciApCi0g ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRUlOVkFMOworICAgIGlmICggIXIgKQor ICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAgICAgcmMgPSAtRU5PRU5UOwotICAgICAgICAg ICAgaWYgKCAhcmFuZ2VzZXRfY29udGFpbnNfcmFuZ2Uociwgc3RhcnQsIGVuZCkgKQotICAgICAg ICAgICAgICAgIGJyZWFrOworICAgIHJjID0gLUVOT0VOVDsKKyAgICBpZiAoICFyYW5nZXNldF9j b250YWluc19yYW5nZShyLCBzdGFydCwgZW5kKSApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAg ICAgICAgICByYyA9IHJhbmdlc2V0X3JlbW92ZV9yYW5nZShyLCBzdGFydCwgZW5kKTsKLSAgICAg ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIHJjID0gcmFuZ2VzZXRfcmVtb3Zl X3JhbmdlKHIsIHN0YXJ0LCBlbmQpOwogCisgb3V0OgogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2 ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAogICAgIHJldHVybiBy YzsKQEAgLTkzOSwyMCArOTE4LDEyIEBAIGludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3Nl cnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogCiAgICAgc3Bpbl9sb2NrX3Jl Y3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgIHJj ID0gLUVOT0VOVDsKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCi0gICAgewotICAgICAgICBpZiAoIHMg PT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKLSAgICAgICAgICAg IGNvbnRpbnVlOworICAgIHMgPSBHRVRfSU9SRVFfU0VSVkVSKGQsIGlkKTsKIAotICAgICAgICBp ZiAoIHMtPmlkID09IGlkICkKLSAgICAgICAgewotICAgICAgICAgICAgcmMgPSBwMm1fc2V0X2lv cmVxX3NlcnZlcihkLCBmbGFncywgcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot ICAgIH0KKyAgICBpZiAoICFzIHx8IElTX0RFRkFVTFQocykgKQorICAgICAgICByYyA9IC1FTk9F TlQ7CisgICAgZWxzZQorICAgICAgICByYyA9IHAybV9zZXRfaW9yZXFfc2VydmVyKGQsIGZsYWdz LCBzKTsKIAogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlv cmVxX3NlcnZlci5sb2NrKTsKIApAQCAtOTcwLDM4ICs5NDEsMjkgQEAgaW50IGh2bV9tYXBfbWVt X3R5cGVfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiBp bnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRf dCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZWQpCiB7Ci0g ICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7CisgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnM7CiAgICAgaW50IHJjOwogCiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgIHJjID0gLUVOT0VOVDsKLSAgICBsaXN0 X2Zvcl9lYWNoICggZW50cnksCi0gICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21h aW4uaW9yZXFfc2VydmVyLmxpc3QgKQotICAgIHsKLSAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMgPSBsaXN0X2VudHJ5KGVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5KTsKKyAgICBz ID0gR0VUX0lPUkVRX1NFUlZFUihkLCBpZCk7CiAKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2gu aHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsK LQotICAgICAgICBpZiAoIHMtPmlkICE9IGlkICkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAg IHJjID0gLUVOT0VOVDsKKyAgICBpZiAoICFzIHx8IElTX0RFRkFVTFQocykgKQorICAgICAgICBn b3RvIG91dDsKIAotICAgICAgICBkb21haW5fcGF1c2UoZCk7CisgICAgZG9tYWluX3BhdXNlKGQp OwogCi0gICAgICAgIGlmICggZW5hYmxlZCApCi0gICAgICAgICAgICBodm1faW9yZXFfc2VydmVy X2VuYWJsZShzLCBmYWxzZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGh2bV9pb3JlcV9z ZXJ2ZXJfZGlzYWJsZShzLCBmYWxzZSk7CisgICAgaWYgKCBlbmFibGVkICkKKyAgICAgICAgaHZt X2lvcmVxX3NlcnZlcl9lbmFibGUocyk7CisgICAgZWxzZQorICAgICAgICBodm1faW9yZXFfc2Vy dmVyX2Rpc2FibGUocyk7CiAKLSAgICAgICAgZG9tYWluX3VucGF1c2UoZCk7CisgICAgZG9tYWlu X3VucGF1c2UoZCk7CiAKLSAgICAgICAgcmMgPSAwOwotICAgICAgICBicmVhazsKLSAgICB9Cisg ICAgcmMgPSAwOwogCisgb3V0OgogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKICAgICByZXR1cm4gcmM7CiB9CkBAIC0xMDA5 LDE3ICs5NzEsMTcgQEAgaW50IGh2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlKHN0cnVjdCBkb21h aW4gKmQsIGlvc2VydmlkX3QgaWQsCiBpbnQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX2FkZF92Y3B1 KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpZDsKICAgICBpbnQgcmM7CiAKICAgICBz cGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2sp OwogCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIGxpc3RfZW50cnkgKQorICAgIEZPUl9FQUNIX0lPUkVRX1NFUlZFUihkLCBp ZCwgcykKICAgICB7Ci0gICAgICAgIGJvb2wgaXNfZGVmYXVsdCA9IChzID09IGQtPmFyY2guaHZt X2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlcik7CisgICAgICAgIGlmICggIXMgKQorICAgICAg ICAgICAgY29udGludWU7CiAKLSAgICAgICAgcmMgPSBodm1faW9yZXFfc2VydmVyX2FkZF92Y3B1 KHMsIGlzX2RlZmF1bHQsIHYpOworICAgICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWRkX3Zj cHUocywgdik7CiAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAg IH0KQEAgLTEwMjksMTAgKzk5MSwxNSBAQCBpbnQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX2FkZF92 Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogICAgIHJldHVybiAwOwogCiAg ZmFpbDoKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgd2hpbGUgKCBpZC0tICE9IDAgKQorICAg IHsKKyAgICAgICAgcyA9IEdFVF9JT1JFUV9TRVJWRVIoZCwgaWQpOworCisgICAgICAgIGlmICgg IXMgKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9y ZW1vdmVfdmNwdShzLCB2KTsKKyAgICB9CiAKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQt PmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKQEAgLTEwNDIsNDMgKzEwMDks NDUgQEAgaW50IGh2bV9hbGxfaW9yZXFfc2VydmVyc19hZGRfdmNwdShzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3QgdmNwdSAqdikKIHZvaWQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX3JlbW92ZV92Y3B1 KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpZDsKIAogICAgIHNwaW5fbG9ja19yZWN1 cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICBsaXN0 X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg bGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQorICAgIHsK KyAgICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBodm1f aW9yZXFfc2VydmVyX3JlbW92ZV92Y3B1KHMsIHYpOworICAgIH0KIAogICAgIHNwaW5fdW5sb2Nr X3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIH0KIAog dm9pZCBodm1fZGVzdHJveV9hbGxfaW9yZXFfc2VydmVycyhzdHJ1Y3QgZG9tYWluICpkKQogewot ICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCAqbmV4dDsKKyAgICBzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqczsKKyAgICB1bnNpZ25lZCBpbnQgaWQ7CiAKICAgICBzcGluX2xvY2tfcmVj dXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgLyog Tm8gbmVlZCB0byBkb21haW5fcGF1c2UoKSBhcyB0aGUgZG9tYWluIGlzIGJlaW5nIHRvcm4gZG93 biAqLwogCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlICggcywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZk LT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlk LCBzKQogICAgIHsKLSAgICAgICAgYm9vbCBpc19kZWZhdWx0ID0gKHMgPT0gZC0+YXJjaC5odm1f ZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyKTsKLQotICAgICAgICBodm1faW9yZXFfc2VydmVy X2Rpc2FibGUocywgaXNfZGVmYXVsdCk7Ci0KLSAgICAgICAgaWYgKCBpc19kZWZhdWx0ICkKLSAg ICAgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciA9IE5VTEw7 CisgICAgICAgIGlmICggIXMgKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbGlz dF9kZWwoJnMtPmxpc3RfZW50cnkpOworICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUo cyk7CisgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGVpbml0KHMpOwogCi0gICAgICAgIGh2bV9p b3JlcV9zZXJ2ZXJfZGVpbml0KHMsIGlzX2RlZmF1bHQpOworICAgICAgICBBU1NFUlQoZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudCk7CisgICAgICAgIC0tZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudDsKIAorICAgICAgICBTRVRfSU9SRVFfU0VSVkVSKGQs IGlkLCBOVUxMKTsKICAgICAgICAgeGZyZWUocyk7CiAgICAgfQorICAgIEFTU0VSVCghZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudCk7CiAKICAgICBzcGluX3VubG9ja19yZWN1 cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiB9CkBAIC0xMTEx LDcgKzEwODAsNyBAQCBpbnQgaHZtX3NldF9kbV9kb21haW4oc3RydWN0IGRvbWFpbiAqZCwgZG9t aWRfdCBkb21pZCkKICAgICAgKiBzdGlsbCBiZSBzZXQgYW5kIHRodXMsIHdoZW4gdGhlIHNlcnZl ciBpcyBjcmVhdGVkLCBpdCB3aWxsIGhhdmUKICAgICAgKiB0aGUgY29ycmVjdCBkb21pZC4KICAg ICAgKi8KLSAgICBzID0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyOwor ICAgIHMgPSBHRVRfSU9SRVFfU0VSVkVSKGQsIERFRkFVTFRfSU9TRVJWSUQpOwogICAgIGlmICgg IXMgKQogICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTExNjQsMTIgKzExMzMsMTMgQEAgc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4g KmQsCiAgICAgdWludDMyX3QgY2Y4OwogICAgIHVpbnQ4X3QgdHlwZTsKICAgICB1aW50NjRfdCBh ZGRyOworICAgIHVuc2lnbmVkIGludCBpZDsKIAotICAgIGlmICggbGlzdF9lbXB0eSgmZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KSApCisgICAgaWYgKCAhZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudCApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAg aWYgKCBwLT50eXBlICE9IElPUkVRX1RZUEVfQ09QWSAmJiBwLT50eXBlICE9IElPUkVRX1RZUEVf UElPICkKLSAgICAgICAgcmV0dXJuIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3Nl cnZlcjsKKyAgICAgICAgcmV0dXJuIEdFVF9JT1JFUV9TRVJWRVIoZCwgREVGQVVMVF9JT1NFUlZJ RCk7CiAKICAgICBjZjggPSBkLT5hcmNoLmh2bV9kb21haW4ucGNpX2NmODsKIApAQCAtMTIwOSwx NiArMTE3OSwxMSBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9z ZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgYWRkciA9IHAtPmFkZHI7CiAgICAgfQog Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIGxpc3RfZW50cnkgKQorICAgIEZPUl9FQUNIX0lPUkVRX1NFUlZFUihkLCBpZCwg cykKICAgICB7CiAgICAgICAgIHN0cnVjdCByYW5nZXNldCAqcjsKIAotICAgICAgICBpZiAoIHMg PT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKLSAgICAgICAgICAg IGNvbnRpbnVlOwotCi0gICAgICAgIGlmICggIXMtPmVuYWJsZWQgKQorICAgICAgICBpZiAoICFz IHx8IElTX0RFRkFVTFQocykgKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgciA9 IHMtPnJhbmdlW3R5cGVdOwpAQCAtMTI1MSw3ICsxMjE2LDcgQEAgc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKmh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAg IH0KICAgICB9CiAKLSAgICByZXR1cm4gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFf c2VydmVyOworICAgIHJldHVybiBHRVRfSU9SRVFfU0VSVkVSKGQsIERFRkFVTFRfSU9TRVJWSUQp OwogfQogCiBzdGF0aWMgaW50IGh2bV9zZW5kX2J1ZmZlcmVkX2lvcmVxKHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzLCBpb3JlcV90ICpwKQpAQCAtMTQxMCwxMyArMTM3NSwxNiBAQCB1bnNpZ25l ZCBpbnQgaHZtX2Jyb2FkY2FzdF9pb3JlcShpb3JlcV90ICpwLCBib29sIGJ1ZmZlcmVkKQogewog ICAgIHN0cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47CiAgICAgc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnM7Ci0gICAgdW5zaWduZWQgaW50IGZhaWxlZCA9IDA7CisgICAgdW5zaWdu ZWQgaW50IGlkLCBmYWlsZWQgPSAwOworCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlk LCBzKQorICAgIHsKKyAgICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250aW51ZTsKIAot ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAm ZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICBsaXN0X2VudHJ5ICkKICAgICAgICAgaWYgKCBodm1fc2VuZF9pb3JlcShzLCBwLCBi dWZmZXJlZCkgPT0gWDg2RU1VTF9VTkhBTkRMRUFCTEUgKQogICAgICAgICAgICAgZmFpbGVkKys7 CisgICAgfQogCiAgICAgcmV0dXJuIGZhaWxlZDsKIH0KQEAgLTE0MzYsNyArMTQwNCw2IEBAIHN0 YXRpYyBpbnQgaHZtX2FjY2Vzc19jZjgoCiB2b2lkIGh2bV9pb3JlcV9pbml0KHN0cnVjdCBkb21h aW4gKmQpCiB7CiAgICAgc3Bpbl9sb2NrX2luaXQoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9z ZXJ2ZXIubG9jayk7Ci0gICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubGlzdCk7CiAKICAgICByZWdpc3Rlcl9wb3J0aW9faGFuZGxlcihkLCAweGNmOCwg NCwgaHZtX2FjY2Vzc19jZjgpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaAppbmRleCA3ZjEy OGMwNWZmLi4wMWZlOGE3MmQ4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9k b21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaApAQCAtNjAsNyAr NjAsNiBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciB7CiAKICAgICAvKiBEb21haW4gaWQgb2Yg ZW11bGF0aW5nIGRvbWFpbiAqLwogICAgIGRvbWlkX3QgICAgICAgICAgICAgICAgZG9taWQ7Ci0g ICAgaW9zZXJ2aWRfdCAgICAgICAgICAgICBpZDsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2Ug IGlvcmVxOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgaW9yZXFfdmNwdV9saXN0OwogICAg IHN0cnVjdCBodm1faW9yZXFfcGFnZSAgYnVmaW9yZXE7CkBAIC0xMDAsNiArOTksOSBAQCBzdHJ1 Y3QgaHZtX3BpX29wcyB7CiAgICAgdm9pZCAoKmRvX3Jlc3VtZSkoc3RydWN0IHZjcHUgKnYpOwog fTsKIAorI2RlZmluZSBNQVhfTlJfSU9SRVFfU0VSVkVSUyA4CisjZGVmaW5lIERFRkFVTFRfSU9T RVJWSUQgMAorCiBzdHJ1Y3QgaHZtX2RvbWFpbiB7CiAgICAgLyogR3Vlc3QgcGFnZSByYW5nZSB1 c2VkIGZvciBub24tZGVmYXVsdCBpb3JlcSBzZXJ2ZXJzICovCiAgICAgc3RydWN0IHsKQEAgLTEw OSwxMSArMTExLDEwIEBAIHN0cnVjdCBodm1fZG9tYWluIHsKIAogICAgIC8qIExvY2sgcHJvdGVj dHMgYWxsIG90aGVyIHZhbHVlcyBpbiB0aGUgc3ViLXN0cnVjdCBhbmQgdGhlIGRlZmF1bHQgKi8K ICAgICBzdHJ1Y3QgewotICAgICAgICBzcGlubG9ja190ICAgICAgIGxvY2s7Ci0gICAgICAgIGlv c2VydmlkX3QgICAgICAgaWQ7Ci0gICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgICAg ICAgc3BpbmxvY2tfdCAgICAgICAgICAgICAgbG9jazsKKyAgICAgICAgc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnNlcnZlcltNQVhfTlJfSU9SRVFfU0VSVkVSU107CisgICAgICAgIHVuc2lnbmVk IGludCAgICAgICAgICAgIGNvdW50OwogICAgIH0gaW9yZXFfc2VydmVyOwotICAgIHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpkZWZhdWx0X2lvcmVxX3NlcnZlcjsKIAogICAgIC8qIENhY2hlZCBD RjggZm9yIGd1ZXN0IFBDSSBjb25maWcgY3ljbGVzICovCiAgICAgdWludDMyX3QgICAgICAgICAg ICAgICAgcGNpX2NmODsKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=