From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v5 08/12] x86/hvm/ioreq: maintain an array of ioreq servers rather than a list Date: Fri, 8 Sep 2017 16:21:33 +0100 Message-ID: <20170908152137.22808-9-paul.durrant@citrix.com> References: <20170908152137.22808-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dqL6H-0007df-Qu for xen-devel@lists.xenproject.org; Fri, 08 Sep 2017 15:21:46 +0000 In-Reply-To: <20170908152137.22808-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 NToKIC0gU3dpdGNoZWQgR0VUL1NFVF9JT1JFUV9TRVJWRVIoKSBtYWNyb3MgdG8gZ2V0L3NldF9p b3JlcV9zZXJ2ZXIoKQogICBmdW5jdGlvbnMgdG8gYXZvaWQgcG9zc2libGUgZG91YmxlLWV2YWx1 YXRpb24gaXNzdWVzLgoKdjQ6CiAtIEludHJvZHVjZWQgbW9yZSBoZWxwZXIgbWFjcm9zIGFuZCBy ZWxvY2F0ZWQgdGhlbSB0byB0aGUgdG9wIG9mIHRoZQogICBjb2RlLgoKdjM6CiAtIE5ldyBwYXRj aCAocmVwbGFjaW5nICJtb3ZlIGlzX2RlZmF1bHQgaW50byBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciIpIGluCiAgIHJlc3BvbnNlIHRvIHJldmlldyBjb21tZW50cy4KLS0tCiB4ZW4vYXJjaC94ODYv aHZtL2lvcmVxLmMgICAgICAgICB8IDUwMSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIHwgIDExICstCiAyIGZp bGVzIGNoYW5nZWQsIDI0NSBpbnNlcnRpb25zKCspLCAyNjcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5j CmluZGV4IGYyZTBiM2Y3NGEuLjU0MTNjYjhkMDUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vaW9yZXEuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKQEAgLTMzLDYgKzMzLDMy IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvaHZtL2lvcmVxLmg+CiAKK3N0YXRpYyB2b2lkIHNldF9p b3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKK3sKKyAgICBB U1NFUlQoaWQgPCBNQVhfTlJfSU9SRVFfU0VSVkVSUyk7CisgICAgQVNTRVJUKCFkLT5hcmNoLmh2 bV9kb21haW4uaW9yZXFfc2VydmVyLnNlcnZlcltpZF0pOworCisgICAgZC0+YXJjaC5odm1fZG9t YWluLmlvcmVxX3NlcnZlci5zZXJ2ZXJbaWRdID0gczsKK30KKworc3RhdGljIHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpnZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlk KQoreworICAgIGlmICggaWQgPj0gTUFYX05SX0lPUkVRX1NFUlZFUlMgKQorICAgICAgICByZXR1 cm4gTlVMTDsKKworICAgIHJldHVybiBkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLnNl cnZlcltpZF07Cit9CisKKyNkZWZpbmUgSVNfREVGQVVMVChzKSBcCisgICAgKChzKSA9PSBnZXRf aW9yZXFfc2VydmVyKChzKS0+ZG9tYWluLCBERUZBVUxUX0lPU0VSVklEKSkKKworI2RlZmluZSBG T1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpIFwKKyAgICBmb3IgKCAoaWQpID0gMCwgKHMp ID0gZ2V0X2lvcmVxX3NlcnZlcigoZCksIChpZCkpOyBcCisgICAgICAgICAgKGlkKSA8IE1BWF9O Ul9JT1JFUV9TRVJWRVJTOyBcCisgICAgICAgICAgKHMpID0gZ2V0X2lvcmVxX3NlcnZlcigoZCks ICsrKGlkKSkgKQorCiBzdGF0aWMgaW9yZXFfdCAqZ2V0X2lvcmVxKHN0cnVjdCBodm1faW9yZXFf c2VydmVyICpzLCBzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzaGFyZWRfaW9wYWdlX3QgKnAgPSBz LT5pb3JlcS52YTsKQEAgLTQ3LDEzICs3MywxNSBAQCBib29sIGh2bV9pb19wZW5kaW5nKHN0cnVj dCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAgc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgdW5zaWduZWQgaW50IGlkOwogCi0gICAgbGlz dF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNo Lmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg IGxpc3RfZW50cnkgKQorICAgIEZPUl9FQUNIX0lPUkVRX1NFUlZFUihkLCBpZCwgcykKICAgICB7 CiAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfdmNwdSAqc3Y7CiAKKyAgICAgICAgaWYgKCAhcyAp CisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICgg c3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcy0+aW9yZXFfdmNwdV9saXN0LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCkBAIC0xMjcsMTMgKzE1 NSwxNSBAQCBib29sIGhhbmRsZV9odm1faW9fY29tcGxldGlvbihzdHJ1Y3QgdmNwdSAqdikKICAg ICBzdHJ1Y3QgaHZtX3ZjcHVfaW8gKnZpbyA9ICZ2LT5hcmNoLmh2bV92Y3B1Lmh2bV9pbzsKICAg ICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKICAgICBlbnVtIGh2bV9pb19jb21wbGV0aW9u IGlvX2NvbXBsZXRpb247CisgICAgdW5zaWduZWQgaW50IGlkOwogCi0gICAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2Rv bWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9l bnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsKICAgICAg ICAgc3RydWN0IGh2bV9pb3JlcV92Y3B1ICpzdjsKIAorICAgICAgICBpZiAoICFzICkKKyAgICAg ICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzdiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzLT5pb3JlcV92Y3B1X2xpc3QsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKQEAgLTI0MywxNCArMjczLDE2IEBA IHN0YXRpYyBpbnQgaHZtX21hcF9pb3JlcV9wYWdlKAogYm9vbCBpc19pb3JlcV9zZXJ2ZXJfcGFn ZShzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlKQogewogICAg IGNvbnN0IHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpZDsK ICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5h cmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCi0gICAgbGlzdF9mb3JfZWFjaF9l bnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4u aW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkg KQorICAgIEZPUl9FQUNIX0lPUkVRX1NFUlZFUihkLCBpZCwgcykKICAgICB7CisgICAgICAgIGlm ICggIXMgKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaWYgKCAocy0+aW9yZXEu dmEgJiYgcy0+aW9yZXEucGFnZSA9PSBwYWdlKSB8fAogICAgICAgICAgICAgIChzLT5idWZpb3Jl cS52YSAmJiBzLT5idWZpb3JlcS5wYWdlID09IHBhZ2UpICkKICAgICAgICAgewpAQCAtMzAxLDgg KzMzMyw5IEBAIHN0YXRpYyB2b2lkIGh2bV91cGRhdGVfaW9yZXFfZXZ0Y2huKHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzLAogICAgIH0KIH0KIAorCiBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2 ZXJfYWRkX3ZjcHUoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZhdWx0LCBzdHJ1Y3QgdmNwdSAqdikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdSAqdikKIHsKICAg ICBzdHJ1Y3QgaHZtX2lvcmVxX3ZjcHUgKnN2OwogICAgIGludCByYzsKQEAgLTMzMSw3ICszNjQs NyBAQCBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfYWRkX3ZjcHUoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsCiAgICAgICAgICAgICBnb3RvIGZhaWwzOwogCiAgICAgICAgIHMtPmJ1Zmlv cmVxX2V2dGNobiA9IHJjOwotICAgICAgICBpZiAoIGlzX2RlZmF1bHQgKQorICAgICAgICBpZiAo IElTX0RFRkFVTFQocykgKQogICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tI Vk1fUEFSQU1fQlVGSU9SRVFfRVZUQ0hOXSA9CiAgICAgICAgICAgICAgICAgcy0+YnVmaW9yZXFf ZXZ0Y2huOwogICAgIH0KQEAgLTQzMSw3ICs0NjQsNiBAQCBzdGF0aWMgaW50IGh2bV9pb3JlcV9z ZXJ2ZXJfbWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogfQogCiBzdGF0aWMg aW50IGh2bV9pb3JlcV9zZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZh dWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFuZGxl X2J1ZmlvcmVxKQogewogICAgIHN0cnVjdCBkb21haW4gKmQgPSBzLT5kb21haW47CkBAIC00Mzks NyArNDcxLDcgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX3NldHVwX3BhZ2VzKHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzLAogICAgIHVuc2lnbmVkIGxvbmcgYnVmaW9yZXFfZ2ZuID0g Z2ZuX3goSU5WQUxJRF9HRk4pOwogICAgIGludCByYzsKIAotICAgIGlmICggaXNfZGVmYXVsdCAp CisgICAgaWYgKCBJU19ERUZBVUxUKHMpICkKICAgICB7CiAgICAgICAgIC8qCiAgICAgICAgICAq IFRoZSBkZWZhdWx0IGlvcmVxIHNlcnZlciBtdXN0IGhhbmRsZSBidWZmZXJlZCBpb3JlcXMsIGZv cgpAQCAtNDY4LDggKzUwMCw3IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9zZXR1cF9w YWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICByZXR1cm4gcmM7CiB9CiAKLXN0 YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg aXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMoc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRv bWFpbjsKICAgICBib29sIGhhbmRsZV9idWZpb3JlcSA9ICEhcy0+YnVmaW9yZXEudmE7CkBAIC00 NzksNyArNTEwLDcgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIAogICAgIGh2bV91bm1hcF9pb3JlcV9wYWdlKHMs IGZhbHNlKTsKIAotICAgIGlmICggIWlzX2RlZmF1bHQgKQorICAgIGlmICggIUlTX0RFRkFVTFQo cykgKQogICAgIHsKICAgICAgICAgaWYgKCBoYW5kbGVfYnVmaW9yZXEgKQogICAgICAgICAgICAg aHZtX2ZyZWVfaW9yZXFfZ2ZuKGQsIHMtPmJ1ZmlvcmVxLmdmbik7CkBAIC00ODgsMTIgKzUxOSwx MSBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzLAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZl cl9mcmVlX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZhdWx0KQorc3RhdGlj IHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcykKIHsKICAgICB1bnNpZ25lZCBpbnQgaTsKIAotICAgIGlmICggaXNfZGVmYXVsdCAp CisgICAgaWYgKCBJU19ERUZBVUxUKHMpICkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICgg aSA9IDA7IGkgPCBOUl9JT19SQU5HRV9UWVBFUzsgaSsrICkKQEAgLTUwMSwxOSArNTMxLDE5IEBA IHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMoc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnMsCiB9CiAKIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19y YW5nZXNldHMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCBpZCkKIHsKICAgICB1bnNp Z25lZCBpbnQgaTsKICAgICBpbnQgcmM7CiAKLSAgICBpZiAoIGlzX2RlZmF1bHQgKQorICAgIGlm ICggSVNfREVGQVVMVChzKSApCiAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIGZvciAoIGkgPSAw OyBpIDwgTlJfSU9fUkFOR0VfVFlQRVM7IGkrKyApCiAgICAgewogICAgICAgICBjaGFyICpuYW1l OwogCi0gICAgICAgIHJjID0gYXNwcmludGYoJm5hbWUsICJpb3JlcV9zZXJ2ZXIgJWQgJXMiLCBz LT5pZCwKKyAgICAgICAgcmMgPSBhc3ByaW50ZigmbmFtZSwgImlvcmVxX3NlcnZlciAlZCAlcyIs IGlkLAogICAgICAgICAgICAgICAgICAgICAgIChpID09IFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQp ID8gInBvcnQiIDoKICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSBYRU5fRE1PUF9JT19SQU5H RV9NRU1PUlkpID8gIm1lbW9yeSIgOgogICAgICAgICAgICAgICAgICAgICAgIChpID09IFhFTl9E TU9QX0lPX1JBTkdFX1BDSSkgPyAicGNpIiA6CkBAIC01MzcsMTMgKzU2NywxMiBAQCBzdGF0aWMg aW50IGh2bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcmFuZ2VzZXRzKHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzLAogICAgIHJldHVybiAwOwogCiAgZmFpbDoKLSAgICBodm1faW9yZXFfc2VydmVyX2Zy ZWVfcmFuZ2VzZXRzKHMsIGZhbHNlKTsKKyAgICBodm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2Vz ZXRzKHMpOwogCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBodm1faW9yZXFfc2Vy dmVyX2VuYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lkIGh2bV9pb3Jl cV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewogICAgIHN0cnVj dCBkb21haW4gKmQgPSBzLT5kb21haW47CiAgICAgc3RydWN0IGh2bV9pb3JlcV92Y3B1ICpzdjsK QEAgLTU1NCw3ICs1ODMsNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2VuYWJsZShz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICBpZiAoIHMtPmVuYWJsZWQgKQogICAgICAg ICBnb3RvIGRvbmU7CiAKLSAgICBpZiAoICFpc19kZWZhdWx0ICkKKyAgICBpZiAoICFJU19ERUZB VUxUKHMpICkKICAgICB7CiAgICAgICAgIGh2bV9yZW1vdmVfaW9yZXFfZ2ZuKGQsICZzLT5pb3Jl cSk7CiAKQEAgLTU3Myw4ICs2MDIsNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2Vu YWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICBzcGluX3VubG9jaygmcy0+bG9j ayk7CiB9CiAKLXN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGlzX2RlZmF1bHQpCitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUoc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRv bWFpbjsKICAgICBib29sIGhhbmRsZV9idWZpb3JlcSA9ICEhcy0+YnVmaW9yZXEudmE7CkBAIC01 ODQsNyArNjEyLDcgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzLAogICAgIGlmICggIXMtPmVuYWJsZWQgKQogICAgICAgICBn b3RvIGRvbmU7CiAKLSAgICBpZiAoICFpc19kZWZhdWx0ICkKKyAgICBpZiAoICFJU19ERUZBVUxU KHMpICkKICAgICB7CiAgICAgICAgIGlmICggaGFuZGxlX2J1ZmlvcmVxICkKICAgICAgICAgICAg IGh2bV9hZGRfaW9yZXFfZ2ZuKGQsICZzLT5idWZpb3JlcSk7CkBAIC02MDAsMTMgKzYyOCwxMSBA QCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsCiAKIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRvbWFpbiAqZCwgZG9taWRfdCBkb21pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgaXNfZGVmYXVsdCwgaW50IGJ1ZmlvcmVxX2hhbmRsaW5nLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCBpZCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBidWZpb3JlcV9oYW5kbGluZywgaW9zZXJ2aWRfdCBpZCkKIHsKICAg ICBzdHJ1Y3QgdmNwdSAqdjsKICAgICBpbnQgcmM7CiAKLSAgICBzLT5pZCA9IGlkOwogICAgIHMt PmRvbWFpbiA9IGQ7CiAgICAgcy0+ZG9taWQgPSBkb21pZDsKIApAQCAtNjE0LDcgKzY0MCw3IEBA IHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzLAogICAgIElOSVRfTElTVF9IRUFEKCZzLT5pb3JlcV92Y3B1X2xpc3QpOwogICAgIHNwaW5f bG9ja19pbml0KCZzLT5idWZpb3JlcV9sb2NrKTsKIAotICAgIHJjID0gaHZtX2lvcmVxX3NlcnZl cl9hbGxvY19yYW5nZXNldHMocywgaXNfZGVmYXVsdCk7CisgICAgcmMgPSBodm1faW9yZXFfc2Vy dmVyX2FsbG9jX3Jhbmdlc2V0cyhzLCBpZCk7CiAgICAgaWYgKCByYyApCiAgICAgICAgIHJldHVy biByYzsKIApAQCAtNjIyLDEzICs2NDgsMTMgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVy X2luaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgICAgIHMtPmJ1ZmlvcmVxX2F0 b21pYyA9IHRydWU7CiAKICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfc2V0dXBfcGFnZXMoCi0g ICAgICAgICAgICAgcywgaXNfZGVmYXVsdCwgYnVmaW9yZXFfaGFuZGxpbmcgIT0gSFZNX0lPUkVR U1JWX0JVRklPUkVRX09GRik7CisgICAgICAgICAgICAgcywgYnVmaW9yZXFfaGFuZGxpbmcgIT0g SFZNX0lPUkVRU1JWX0JVRklPUkVRX09GRik7CiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8g ZmFpbF9tYXA7CiAKICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCiAgICAgewotICAgICAgICBy YyA9IGh2bV9pb3JlcV9zZXJ2ZXJfYWRkX3ZjcHUocywgaXNfZGVmYXVsdCwgdik7CisgICAgICAg IHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzLCB2KTsKICAgICAgICAgaWYgKCByYyAp CiAgICAgICAgICAgICBnb3RvIGZhaWxfYWRkOwogICAgIH0KQEAgLTYzNyw0NyArNjYzLDIwIEBA IHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9pbml0KHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzLAogCiAgZmFpbF9hZGQ6CiAgICAgaHZtX2lvcmVxX3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVz KHMpOwotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMocywgaXNfZGVmYXVsdCk7Cisg ICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKIAogIGZhaWxfbWFwOgotICAgIGh2 bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocywgaXNfZGVmYXVsdCk7CisgICAgaHZtX2lv cmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzKTsKIAogICAgIHJldHVybiByYzsKIH0KIAotc3Rh dGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2RlZmF1bHQp CitzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcykKIHsKICAgICBBU1NFUlQoIXMtPmVuYWJsZWQpOwogICAgIGh2bV9pb3JlcV9zZXJ2 ZXJfcmVtb3ZlX2FsbF92Y3B1cyhzKTsKLSAgICBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2Vz KHMsIGlzX2RlZmF1bHQpOwotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMocywg aXNfZGVmYXVsdCk7Ci19Ci0KLXN0YXRpYyBpb3NlcnZpZF90IG5leHRfaW9zZXJ2aWQoc3RydWN0 IGRvbWFpbiAqZCkKLXsKLSAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKLSAgICBpb3Nl cnZpZF90IGlkOwotCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZkLT5hcmNoLmh2bV9kb21h aW4uaW9yZXFfc2VydmVyLmxvY2spKTsKLQotICAgIGlkID0gZC0+YXJjaC5odm1fZG9tYWluLmlv cmVxX3NlcnZlci5pZDsKLQotIGFnYWluOgotICAgIGlkKys7Ci0KLSAgICAvKiBDaGVjayBmb3Ig dW5pcXVlbmVzcyAqLwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAg ICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAgICAgIGlmICgg aWQgPT0gcy0+aWQgKQotICAgICAgICAgICAgZ290byBhZ2FpbjsKLSAgICB9Ci0KLSAgICBkLT5h cmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmlkID0gaWQ7Ci0KLSAgICByZXR1cm4gaWQ7Cisg ICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzKTsKKyAgICBodm1faW9yZXFfc2VydmVy X2ZyZWVfcmFuZ2VzZXRzKHMpOwogfQogCiBpbnQgaHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoc3Ry dWN0IGRvbWFpbiAqZCwgZG9taWRfdCBkb21pZCwKQEAgLTY4NSw1MiArNjg0LDY3IEBAIGludCBo dm1fY3JlYXRlX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90IGRvbWlkLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkX3QgKmlkKQogewogICAgIHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzOworICAgIHVuc2lnbmVkIGludCBpOwogICAgIGludCByYzsK IAogICAgIGlmICggYnVmaW9yZXFfaGFuZGxpbmcgPiBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfQVRP TUlDICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICByYyA9IC1FTk9NRU07CiAgICAg cyA9IHh6YWxsb2Moc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIpOwogICAgIGlmICggIXMgKQotICAg ICAgICBnb3RvIGZhaWwxOworICAgICAgICByZXR1cm4gLUVOT01FTTsKIAogICAgIGRvbWFpbl9w YXVzZShkKTsKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9y ZXFfc2VydmVyLmxvY2spOwogCi0gICAgcmMgPSAtRUVYSVNUOwotICAgIGlmICggaXNfZGVmYXVs dCAmJiBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgIT0gTlVMTCApCi0g ICAgICAgIGdvdG8gZmFpbDI7Ci0KLSAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfaW5pdChzLCBk LCBkb21pZCwgaXNfZGVmYXVsdCwgYnVmaW9yZXFfaGFuZGxpbmcsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV4dF9pb3NlcnZpZChkKSk7Ci0gICAgaWYgKCByYyApCi0gICAgICAg IGdvdG8gZmFpbDM7Ci0KLSAgICBsaXN0X2FkZCgmcy0+bGlzdF9lbnRyeSwKLSAgICAgICAgICAg ICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KTsKLQogICAgIGlmICggaXNf ZGVmYXVsdCApCiAgICAgewotICAgICAgICBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3Jl cV9zZXJ2ZXIgPSBzOwotICAgICAgICBodm1faW9yZXFfc2VydmVyX2VuYWJsZShzLCB0cnVlKTsK KyAgICAgICAgaSA9IERFRkFVTFRfSU9TRVJWSUQ7CisKKyAgICAgICAgcmMgPSAtRUVYSVNUOwor ICAgICAgICBpZiAoIGdldF9pb3JlcV9zZXJ2ZXIoZCwgaSkgKQorICAgICAgICAgICAgZ290byBm YWlsOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE1B WF9OUl9JT1JFUV9TRVJWRVJTOyBpKysgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGkg IT0gREVGQVVMVF9JT1NFUlZJRCAmJgorICAgICAgICAgICAgICAgICAhZ2V0X2lvcmVxX3NlcnZl cihkLCBpKSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBy YyA9IC1FTk9TUEM7CisgICAgICAgIGlmICggaSA+PSBNQVhfTlJfSU9SRVFfU0VSVkVSUyApCisg ICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCisgICAgc2V0X2lvcmVxX3NlcnZlcihkLCBp LCBzKTsKKworICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9pbml0KHMsIGQsIGRvbWlkLCBidWZp b3JlcV9oYW5kbGluZywgaSk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gZmFpbDsKKwor ICAgIGlmICggSVNfREVGQVVMVChzKSApCisgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxl KHMpOworCiAgICAgaWYgKCBpZCApCi0gICAgICAgICppZCA9IHMtPmlkOworICAgICAgICAqaWQg PSBpOworCisgICAgZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5jb3VudCsrOwogCiAg ICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmxvY2spOwogICAgIGRvbWFpbl91bnBhdXNlKGQpOwogCiAgICAgcmV0dXJuIDA7CiAKLSBmYWls MzoKLSBmYWlsMjoKKyBmYWlsOgorICAgIHNldF9pb3JlcV9zZXJ2ZXIoZCwgaSwgTlVMTCk7CisK ICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2 ZXIubG9jayk7CiAgICAgZG9tYWluX3VucGF1c2UoZCk7CiAKICAgICB4ZnJlZShzKTsKLSBmYWls MToKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTc0MSwzNSArNzU1LDMwIEBAIGludCBodm1fZGVz dHJveV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCkKIAogICAg IHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9j ayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy Lmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAg ICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciAp Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIHMtPmlkICE9IGlkICkKLSAg ICAgICAgICAgIGNvbnRpbnVlOworICAgIHMgPSBnZXRfaW9yZXFfc2VydmVyKGQsIGlkKTsKIAot ICAgICAgICBkb21haW5fcGF1c2UoZCk7CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlmICggIXMg fHwgSVNfREVGQVVMVChzKSApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgIHAybV9zZXRf aW9yZXFfc2VydmVyKGQsIDAsIHMpOworICAgIGRvbWFpbl9wYXVzZShkKTsKIAotICAgICAgICBo dm1faW9yZXFfc2VydmVyX2Rpc2FibGUocywgZmFsc2UpOworICAgIHAybV9zZXRfaW9yZXFfc2Vy dmVyKGQsIDAsIHMpOwogCi0gICAgICAgIGxpc3RfZGVsKCZzLT5saXN0X2VudHJ5KTsKKyAgICBo dm1faW9yZXFfc2VydmVyX2Rpc2FibGUocyk7CisgICAgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQo cyk7CiAKLSAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQocywgZmFsc2UpOworICAgIGRv bWFpbl91bnBhdXNlKGQpOwogCi0gICAgICAgIGRvbWFpbl91bnBhdXNlKGQpOworICAgIEFTU0VS VChkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmNvdW50KTsKKyAgICAtLWQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuY291bnQ7CiAKLSAgICAgICAgeGZyZWUocyk7CisgICAg c2V0X2lvcmVxX3NlcnZlcihkLCBpZCwgTlVMTCk7CisgICAgeGZyZWUocyk7CiAKLSAgICAgICAg cmMgPSAwOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgcmMgPSAwOwogCisgb3V0OgogICAg IHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5s b2NrKTsKIAogICAgIHJldHVybiByYzsKQEAgLTc4NSwyOSArNzk0LDIzIEBAIGludCBodm1fZ2V0 X2lvcmVxX3NlcnZlcl9pbmZvKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAKICAg ICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxv Y2spOwogCi0gICAgcmMgPSAtRU5PRU5UOwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZl ci5saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0g ICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIg KQotICAgICAgICAgICAgY29udGludWU7CisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwgaWQp OwogCi0gICAgICAgIGlmICggcy0+aWQgIT0gaWQgKQotICAgICAgICAgICAgY29udGludWU7Cisg ICAgcmMgPSAtRU5PRU5UOworICAgIGlmICggIXMgfHwgSVNfREVGQVVMVChzKSApCisgICAgICAg IGdvdG8gb3V0OwogCi0gICAgICAgICppb3JlcV9nZm4gPSBzLT5pb3JlcS5nZm47CisgICAgKmlv cmVxX2dmbiA9IHMtPmlvcmVxLmdmbjsKIAotICAgICAgICBpZiAoIHMtPmJ1ZmlvcmVxLnZhICE9 IE5VTEwgKQotICAgICAgICB7Ci0gICAgICAgICAgICAqYnVmaW9yZXFfZ2ZuID0gcy0+YnVmaW9y ZXEuZ2ZuOwotICAgICAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBzLT5idWZpb3JlcV9ldnRjaG47 Ci0gICAgICAgIH0KLQotICAgICAgICByYyA9IDA7Ci0gICAgICAgIGJyZWFrOworICAgIGlmICgg cy0+YnVmaW9yZXEudmEgIT0gTlVMTCApCisgICAgeworICAgICAgICAqYnVmaW9yZXFfZ2ZuID0g cy0+YnVmaW9yZXEuZ2ZuOworICAgICAgICAqYnVmaW9yZXFfcG9ydCA9IHMtPmJ1ZmlvcmVxX2V2 dGNobjsKICAgICB9CiAKKyAgICByYyA9IDA7CisKKyBvdXQ6CiAgICAgc3Bpbl91bmxvY2tfcmVj dXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogCiAgICAgcmV0 dXJuIHJjOwpAQCAtODE4LDQ4ICs4MjEsNDEgQEAgaW50IGh2bV9tYXBfaW9fcmFuZ2VfdG9faW9y ZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5kKQogewogICAgIHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzOworICAgIHN0cnVjdCByYW5nZXNldCAqcjsKICAgICBpbnQgcmM7CiAK ICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmxvY2spOwogCi0gICAgcmMgPSAtRU5PRU5UOwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBz LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7 Ci0gICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2 ZXIgKQotICAgICAgICAgICAgY29udGludWU7CisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIoZCwg aWQpOwogCi0gICAgICAgIGlmICggcy0+aWQgPT0gaWQgKQotICAgICAgICB7Ci0gICAgICAgICAg ICBzdHJ1Y3QgcmFuZ2VzZXQgKnI7CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlmICggIXMgfHwg SVNfREVGQVVMVChzKSApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgICAgICBzd2l0Y2gg KCB0eXBlICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFO R0VfUE9SVDoKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAg ICAgICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6Ci0gICAgICAgICAgICAgICAgciA9 IHMtPnJhbmdlW3R5cGVdOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAoIHR5 cGUgKQorICAgIHsKKyAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgY2FzZSBY RU5fRE1PUF9JT19SQU5HRV9NRU1PUlk6CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6 CisgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAg YnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgciA9IE5VTEw7Cisg ICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAg ICAgICAgaWYgKCAhciApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRUlOVkFM OworICAgIGlmICggIXIgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAgICAgcmMgPSAt RUVYSVNUOwotICAgICAgICAgICAgaWYgKCByYW5nZXNldF9vdmVybGFwc19yYW5nZShyLCBzdGFy dCwgZW5kKSApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRUVYSVNUOworICAg IGlmICggcmFuZ2VzZXRfb3ZlcmxhcHNfcmFuZ2Uociwgc3RhcnQsIGVuZCkgKQorICAgICAgICBn b3RvIG91dDsKIAotICAgICAgICAgICAgcmMgPSByYW5nZXNldF9hZGRfcmFuZ2Uociwgc3RhcnQs IGVuZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICByYyA9IHJh bmdlc2V0X2FkZF9yYW5nZShyLCBzdGFydCwgZW5kKTsKIAorIG91dDoKICAgICBzcGluX3VubG9j a19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKICAg ICByZXR1cm4gcmM7CkBAIC04NzAsNDggKzg2Niw0MSBAQCBpbnQgaHZtX3VubWFwX2lvX3Jhbmdl X2Zyb21faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCkKIHsKICAg ICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKyAgICBzdHJ1Y3QgcmFuZ2VzZXQgKnI7CiAg ICAgaW50IHJjOwogCiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgIHJjID0gLUVOT0VOVDsKLSAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2Rv bWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9l bnRyeSApCi0gICAgewotICAgICAgICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1 bHRfaW9yZXFfc2VydmVyICkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHMgPSBnZXRfaW9y ZXFfc2VydmVyKGQsIGlkKTsKIAotICAgICAgICBpZiAoIHMtPmlkID09IGlkICkKLSAgICAgICAg ewotICAgICAgICAgICAgc3RydWN0IHJhbmdlc2V0ICpyOworICAgIHJjID0gLUVOT0VOVDsKKyAg ICBpZiAoICFzIHx8IElTX0RFRkFVTFQocykgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAg ICAgICAgc3dpdGNoICggdHlwZSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIFhF Tl9ETU9QX0lPX1JBTkdFX1BPUlQ6Ci0gICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdF X01FTU9SWToKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUENJOgotICAgICAg ICAgICAgICAgIHIgPSBzLT5yYW5nZVt0eXBlXTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAg ICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QT1JU OgorICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgorICAgIGNhc2UgWEVOX0RNT1Bf SU9fUkFOR0VfUENJOgorICAgICAgICByID0gcy0+cmFuZ2VbdHlwZV07CisgICAgICAgIGJyZWFr OwogCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHIgPSBOVUxMOwotICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAg IHIgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgICAgIHJjID0gLUVJ TlZBTDsKLSAgICAgICAgICAgIGlmICggIXIgKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAg IHJjID0gLUVJTlZBTDsKKyAgICBpZiAoICFyICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAg ICAgICAgIHJjID0gLUVOT0VOVDsKLSAgICAgICAgICAgIGlmICggIXJhbmdlc2V0X2NvbnRhaW5z X3JhbmdlKHIsIHN0YXJ0LCBlbmQpICkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICByYyA9 IC1FTk9FTlQ7CisgICAgaWYgKCAhcmFuZ2VzZXRfY29udGFpbnNfcmFuZ2Uociwgc3RhcnQsIGVu ZCkgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAgICAgcmMgPSByYW5nZXNldF9yZW1v dmVfcmFuZ2Uociwgc3RhcnQsIGVuZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot ICAgIH0KKyAgICByYyA9IHJhbmdlc2V0X3JlbW92ZV9yYW5nZShyLCBzdGFydCwgZW5kKTsKIAor IG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubG9jayk7CiAKICAgICByZXR1cm4gcmM7CkBAIC05MzksMjAgKzkyOCwxMiBAQCBp bnQgaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9z ZXJ2aWRfdCBpZCwKIAogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9k b21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rf ZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZh dWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBzID0gZ2V0X2lv cmVxX3NlcnZlcihkLCBpZCk7CiAKLSAgICAgICAgaWYgKCBzLT5pZCA9PSBpZCApCi0gICAgICAg IHsKLSAgICAgICAgICAgIHJjID0gcDJtX3NldF9pb3JlcV9zZXJ2ZXIoZCwgZmxhZ3MsIHMpOwot ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKCAhcyB8fCBJU19E RUZBVUxUKHMpICkKKyAgICAgICAgcmMgPSAtRU5PRU5UOworICAgIGVsc2UKKyAgICAgICAgcmMg PSBwMm1fc2V0X2lvcmVxX3NlcnZlcihkLCBmbGFncywgcyk7CiAKICAgICBzcGluX3VubG9ja19y ZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKQEAgLTk3 MCwzOCArOTUxLDI5IEBAIGludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1 Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogaW50IGh2bV9zZXRfaW9yZXFfc2VydmVyX3N0 YXRlKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCBlbmFibGVkKQogewotICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5 OworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwogICAgIGludCByYzsKIAogICAgIHNw aW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7 CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0gICAgbGlzdF9mb3JfZWFjaCAoIGVudHJ5LAotICAgICAg ICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0ICkKLSAg ICB7Ci0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzID0gbGlzdF9lbnRyeShlbnRy eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBodm1faW9yZXFfc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdF9lbnRyeSk7Ci0KLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZt X2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAg ICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7CiAKLSAgICAgICAgaWYgKCBzLT5pZCAhPSBp ZCApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICByYyA9IC1FTk9FTlQ7CisgICAgaWYgKCAh cyB8fCBJU19ERUZBVUxUKHMpICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgZG9tYWlu X3BhdXNlKGQpOworICAgIGRvbWFpbl9wYXVzZShkKTsKIAotICAgICAgICBpZiAoIGVuYWJsZWQg KQotICAgICAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9lbmFibGUocywgZmFsc2UpOwotICAgICAg ICBlbHNlCi0gICAgICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUocywgZmFsc2UpOwor ICAgIGlmICggZW5hYmxlZCApCisgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHMpOwor ICAgIGVsc2UKKyAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHMpOwogCi0gICAgICAg IGRvbWFpbl91bnBhdXNlKGQpOworICAgIGRvbWFpbl91bnBhdXNlKGQpOwogCi0gICAgICAgIHJj ID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIHJjID0gMDsKIAorIG91dDoKICAgICBz cGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9j ayk7CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtMTAwOSwxNyArOTgxLDE3IEBAIGludCBodm1fc2V0 X2lvcmVxX3NlcnZlcl9zdGF0ZShzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogaW50 IGh2bV9hbGxfaW9yZXFfc2VydmVyc19hZGRfdmNwdShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qg dmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKyAgICB1bnNpZ25l ZCBpbnQgaWQ7CiAgICAgaW50IHJjOwogCiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgIGxpc3RfZm9yX2VhY2hfZW50 cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlv cmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkK KyAgICBGT1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpCiAgICAgewotICAgICAgICBib29s IGlzX2RlZmF1bHQgPSAocyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2 ZXIpOworICAgICAgICBpZiAoICFzICkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg IHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzLCBpc19kZWZhdWx0LCB2KTsKKyAgICAg ICAgcmMgPSBodm1faW9yZXFfc2VydmVyX2FkZF92Y3B1KHMsIHYpOwogICAgICAgICBpZiAoIHJj ICkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CkBAIC0xMDI5LDEwICsxMDAxLDE1IEBA IGludCBodm1fYWxsX2lvcmVxX3NlcnZlcnNfYWRkX3ZjcHUoc3RydWN0IGRvbWFpbiAqZCwgc3Ry dWN0IHZjcHUgKnYpCiAgICAgcmV0dXJuIDA7CiAKICBmYWlsOgotICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5 ICkKKyAgICB3aGlsZSAoIGlkLS0gIT0gMCApCisgICAgeworICAgICAgICBzID0gZ2V0X2lvcmVx X3NlcnZlcihkLCBpZCk7CisKKyAgICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250aW51 ZTsKKwogICAgICAgICBodm1faW9yZXFfc2VydmVyX3JlbW92ZV92Y3B1KHMsIHYpOworICAgIH0K IAogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5sb2NrKTsKIApAQCAtMTA0Miw0MyArMTAxOSw0NSBAQCBpbnQgaHZtX2FsbF9pb3JlcV9z ZXJ2ZXJzX2FkZF92Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogdm9pZCBo dm1fYWxsX2lvcmVxX3NlcnZlcnNfcmVtb3ZlX3ZjcHUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0 IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgdW5zaWdu ZWQgaW50IGlkOwogCiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5s aXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICBGT1JfRUFD SF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpCisgICAgeworICAgICAgICBpZiAoICFzICkKKyAgICAg ICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfcmVtb3ZlX3ZjcHUo cywgdik7CisgICAgfQogCiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9k b21haW4uaW9yZXFfc2VydmVyLmxvY2spOwogfQogCiB2b2lkIGh2bV9kZXN0cm95X2FsbF9pb3Jl cV9zZXJ2ZXJzKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsICpuZXh0OworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgIHVuc2ln bmVkIGludCBpZDsKIAogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKICAgICAvKiBObyBuZWVkIHRvIGRvbWFpbl9wYXVzZSgp IGFzIHRoZSBkb21haW4gaXMgYmVpbmcgdG9ybiBkb3duICovCiAKLSAgICBsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9z ZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkK KyAgICBGT1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpCiAgICAgewotICAgICAgICBib29s IGlzX2RlZmF1bHQgPSAocyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2 ZXIpOwotCi0gICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzLCBpc19kZWZhdWx0KTsK LQotICAgICAgICBpZiAoIGlzX2RlZmF1bHQgKQotICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9t YWluLmRlZmF1bHRfaW9yZXFfc2VydmVyID0gTlVMTDsKKyAgICAgICAgaWYgKCAhcyApCisgICAg ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBsaXN0X2RlbCgmcy0+bGlzdF9lbnRyeSk7Cisg ICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzKTsKKyAgICAgICAgaHZtX2lvcmVxX3Nl cnZlcl9kZWluaXQocyk7CiAKLSAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQocywgaXNf ZGVmYXVsdCk7CisgICAgICAgIEFTU0VSVChkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmNvdW50KTsKKyAgICAgICAgLS1kLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmNvdW50 OwogCisgICAgICAgIHNldF9pb3JlcV9zZXJ2ZXIoZCwgaWQsIE5VTEwpOwogICAgICAgICB4ZnJl ZShzKTsKICAgICB9CisgICAgQVNTRVJUKCFkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmNvdW50KTsKIAogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5sb2NrKTsKIH0KQEAgLTExMTEsNyArMTA5MCw3IEBAIGludCBodm1fc2V0 X2RtX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90IGRvbWlkKQogICAgICAqIHN0aWxs IGJlIHNldCBhbmQgdGh1cywgd2hlbiB0aGUgc2VydmVyIGlzIGNyZWF0ZWQsIGl0IHdpbGwgaGF2 ZQogICAgICAqIHRoZSBjb3JyZWN0IGRvbWlkLgogICAgICAqLwotICAgIHMgPSBkLT5hcmNoLmh2 bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXI7CisgICAgcyA9IGdldF9pb3JlcV9zZXJ2ZXIo ZCwgREVGQVVMVF9JT1NFUlZJRCk7CiAgICAgaWYgKCAhcyApCiAgICAgICAgIGdvdG8gZG9uZTsK IApAQCAtMTE2NCwxMiArMTE0MywxMyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3Nl bGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICB1aW50MzJfdCBjZjg7CiAg ICAgdWludDhfdCB0eXBlOwogICAgIHVpbnQ2NF90IGFkZHI7CisgICAgdW5zaWduZWQgaW50IGlk OwogCi0gICAgaWYgKCBsaXN0X2VtcHR5KCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy Lmxpc3QpICkKKyAgICBpZiAoICFkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmNvdW50 ICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIHAtPnR5cGUgIT0gSU9SRVFfVFlQ RV9DT1BZICYmIHAtPnR5cGUgIT0gSU9SRVFfVFlQRV9QSU8gKQotICAgICAgICByZXR1cm4gZC0+ YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyOworICAgICAgICByZXR1cm4gZ2V0 X2lvcmVxX3NlcnZlcihkLCBERUZBVUxUX0lPU0VSVklEKTsKIAogICAgIGNmOCA9IGQtPmFyY2gu aHZtX2RvbWFpbi5wY2lfY2Y4OwogCkBAIC0xMjA5LDE2ICsxMTg5LDExIEBAIHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAog ICAgICAgICBhZGRyID0gcC0+YWRkcjsKICAgICB9CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 ICggcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3Jl cV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisg ICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsKICAgICAgICAgc3RydWN0 IHJhbmdlc2V0ICpyOwogCi0gICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVm YXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYg KCAhcy0+ZW5hYmxlZCApCisgICAgICAgIGlmICggIXMgfHwgSVNfREVGQVVMVChzKSApCiAgICAg ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByID0gcy0+cmFuZ2VbdHlwZV07CkBAIC0xMjUx LDcgKzEyMjYsNyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3NlbGVjdF9pb3JlcV9z ZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBk LT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXI7CisgICAgcmV0dXJuIGdldF9p b3JlcV9zZXJ2ZXIoZCwgREVGQVVMVF9JT1NFUlZJRCk7CiB9CiAKIHN0YXRpYyBpbnQgaHZtX3Nl bmRfYnVmZmVyZWRfaW9yZXEoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGlvcmVxX3QgKnAp CkBAIC0xNDEwLDEzICsxMzg1LDE2IEBAIHVuc2lnbmVkIGludCBodm1fYnJvYWRjYXN0X2lvcmVx KGlvcmVxX3QgKnAsIGJvb2wgYnVmZmVyZWQpCiB7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IGN1 cnJlbnQtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKLSAgICB1bnNp Z25lZCBpbnQgZmFpbGVkID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaWQsIGZhaWxlZCA9IDA7CisK KyAgICBGT1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpCisgICAgeworICAgICAgICBpZiAo ICFzICkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAo IHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFf c2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQogICAg ICAgICBpZiAoIGh2bV9zZW5kX2lvcmVxKHMsIHAsIGJ1ZmZlcmVkKSA9PSBYODZFTVVMX1VOSEFO RExFQUJMRSApCiAgICAgICAgICAgICBmYWlsZWQrKzsKKyAgICB9CiAKICAgICByZXR1cm4gZmFp bGVkOwogfQpAQCAtMTQzNiw3ICsxNDE0LDYgQEAgc3RhdGljIGludCBodm1fYWNjZXNzX2NmOCgK IHZvaWQgaHZtX2lvcmVxX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzcGluX2xvY2tf aW5pdCgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKLSAgICBJTklUX0xJ U1RfSEVBRCgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KTsKIAogICAgIHJl Z2lzdGVyX3BvcnRpb19oYW5kbGVyKGQsIDB4Y2Y4LCA0LCBodm1fYWNjZXNzX2NmOCk7CiB9CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2RvbWFpbi5oCmluZGV4IDdmMTI4YzA1ZmYuLjAxZmU4YTcyZDggMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2RvbWFpbi5oCkBAIC02MCw3ICs2MCw2IEBAIHN0cnVjdCBodm1faW9yZXFf c2VydmVyIHsKIAogICAgIC8qIERvbWFpbiBpZCBvZiBlbXVsYXRpbmcgZG9tYWluICovCiAgICAg ZG9taWRfdCAgICAgICAgICAgICAgICBkb21pZDsKLSAgICBpb3NlcnZpZF90ICAgICAgICAgICAg IGlkOwogICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAgaW9yZXE7CiAgICAgc3RydWN0IGxpc3Rf aGVhZCAgICAgICBpb3JlcV92Y3B1X2xpc3Q7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9wYWdlICBi dWZpb3JlcTsKQEAgLTEwMCw2ICs5OSw5IEBAIHN0cnVjdCBodm1fcGlfb3BzIHsKICAgICB2b2lk ICgqZG9fcmVzdW1lKShzdHJ1Y3QgdmNwdSAqdik7CiB9OwogCisjZGVmaW5lIE1BWF9OUl9JT1JF UV9TRVJWRVJTIDgKKyNkZWZpbmUgREVGQVVMVF9JT1NFUlZJRCAwCisKIHN0cnVjdCBodm1fZG9t YWluIHsKICAgICAvKiBHdWVzdCBwYWdlIHJhbmdlIHVzZWQgZm9yIG5vbi1kZWZhdWx0IGlvcmVx IHNlcnZlcnMgKi8KICAgICBzdHJ1Y3QgewpAQCAtMTA5LDExICsxMTEsMTAgQEAgc3RydWN0IGh2 bV9kb21haW4gewogCiAgICAgLyogTG9jayBwcm90ZWN0cyBhbGwgb3RoZXIgdmFsdWVzIGluIHRo ZSBzdWItc3RydWN0IGFuZCB0aGUgZGVmYXVsdCAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIHNw aW5sb2NrX3QgICAgICAgbG9jazsKLSAgICAgICAgaW9zZXJ2aWRfdCAgICAgICBpZDsKLSAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OworICAgICAgICBzcGlubG9ja190ICAgICAgICAgICAg ICBsb2NrOworICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqc2VydmVyW01BWF9OUl9J T1JFUV9TRVJWRVJTXTsKKyAgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgY291bnQ7CiAg ICAgfSBpb3JlcV9zZXJ2ZXI7Ci0gICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmRlZmF1bHRf aW9yZXFfc2VydmVyOwogCiAgICAgLyogQ2FjaGVkIENGOCBmb3IgZ3Vlc3QgUENJIGNvbmZpZyBj eWNsZXMgKi8KICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBwY2lfY2Y4OwotLSAKMi4xMS4w CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==