From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v9 01/11] x86/hvm/ioreq: maintain an array of ioreq servers rather than a list Date: Fri, 6 Oct 2017 13:25:09 +0100 Message-ID: <20171006122519.30345-2-paul.durrant@citrix.com> References: <20171006122519.30345-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 1e0Rh3-000669-4V for xen-devel@lists.xenproject.org; Fri, 06 Oct 2017 12:25:29 +0000 In-Reply-To: <20171006122519.30345-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 Yi1mdW5jdGlvbnMgY2FuIGJlIGF2b2lkZWQuCgpTb21lIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMg YXJlIGNoYW5nZWQgYnkgdGhpcyBwYXRjaDogU3BlY2lmaWNhbGx5LCBpbgp0aGUgY2FzZSB3aGVy ZSB0aGUgaWQgb2YgdGhlIGRlZmF1bHQgaW9yZXEgc2VydmVyIGlzIHBhc3NlZCBpbiwgLUVPUE5P VFNVUFAKaXMgbm93IHJldHVybmVkIHJhdGhlciB0aGFuIC1FTk9FTlQuCgpTaWduZWQtb2ZmLWJ5 OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogUm9n ZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0 cml4LmNvbT4KCnY5OgogLSBtb2RpZmllZCBGT1JfRUFDSC4uLiBtYWNybyBhcyByZXF1ZXN0ZWQg YnkgQW5kcmV3LgoKdjg6CiAtIEFkZHJlc3NlZCB2YXJpb3VzIGNvbW1lbnRzIGZyb20gSmFuLgoK djc6CiAtIEZpeGVkIGFzc2VydGlvbiBmYWlsdXJlIGZvdW5kIGluIHRlc3RpbmcuCgp2NjoKIC0g VXBkYXRlZCBhY2NvcmRpbmcgdG8gY29tbWVudHMgbWFkZSBieSBSb2dlciBvbiB2NCB0aGF0IEkn ZCBtaXNzZWQuCgp2NToKIC0gU3dpdGNoZWQgR0VUL1NFVF9JT1JFUV9TRVJWRVIoKSBtYWNyb3Mg dG8gZ2V0L3NldF9pb3JlcV9zZXJ2ZXIoKQogICBmdW5jdGlvbnMgdG8gYXZvaWQgcG9zc2libGUg ZG91YmxlLWV2YWx1YXRpb24gaXNzdWVzLgoKdjQ6CiAtIEludHJvZHVjZWQgbW9yZSBoZWxwZXIg bWFjcm9zIGFuZCByZWxvY2F0ZWQgdGhlbSB0byB0aGUgdG9wIG9mIHRoZQogICBjb2RlLgoKdjM6 CiAtIE5ldyBwYXRjaCAocmVwbGFjaW5nICJtb3ZlIGlzX2RlZmF1bHQgaW50byBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciIpIGluCiAgIHJlc3BvbnNlIHRvIHJldmlldyBjb21tZW50cy4KLS0tCiB4 ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICB8IDUwOSArKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIHwg IDEwICstCiAyIGZpbGVzIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspLCAyNjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2 L2h2bS9pb3JlcS5jCmluZGV4IGYyZTBiM2Y3NGEuLmE2ZGUxZTdkYjIgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKQEAg LTMzLDYgKzMzLDQ0IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvaHZtL2lvcmVxLmg+CiAKK3N0YXRp YyB2b2lkIHNldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAq cykKK3sKKyAgICBBU1NFUlQoaWQgPCBNQVhfTlJfSU9SRVFfU0VSVkVSUyk7CisgICAgQVNTRVJU KCFzIHx8ICFkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLnNlcnZlcltpZF0pOworCisg ICAgZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5zZXJ2ZXJbaWRdID0gczsKK30KKwor I2RlZmluZSBHRVRfSU9SRVFfU0VSVkVSKGQsIGlkKSBcCisgICAgKGQpLT5hcmNoLmh2bV9kb21h aW4uaW9yZXFfc2VydmVyLnNlcnZlcltpZF0KKworc3RhdGljIHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpnZXRfaW9yZXFfc2VydmVyKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkKQor eworICAgIGlmICggaWQgPj0gTUFYX05SX0lPUkVRX1NFUlZFUlMgKQorICAgICAgICByZXR1cm4g TlVMTDsKKworICAgIHJldHVybiBHRVRfSU9SRVFfU0VSVkVSKGQsIGlkKTsKK30KKworI2RlZmlu ZSBJU19ERUZBVUxUKHMpIFwKKyAgICAoKHMpID09IGdldF9pb3JlcV9zZXJ2ZXIoKHMpLT5kb21h aW4sIERFRkFVTFRfSU9TRVJWSUQpKQorCisvKgorICogSXRlcmF0ZSBvdmVyIGFsbCBwb3NzaWJs ZSBpb3JlcSBzZXJ2ZXJzLiBUaGUgdXNlIG9mIGlubGluZSBmdW5jdGlvbgorICogZ2V0X2lvcmVx X3NlcnZlcigpIGluIHRoZSBpbmNyZW1lbnQgaXMgZGVsaWJlcmF0ZSBhcyB1c2Ugb2YgdGhlCisg KiBHRVRfSU9SRVFfU0VSVkVSKCkgbWFjcm8gd2lsbCBjYXVzZSBnY2MgdG8gY29tcGxhaW4gYWJv dXQgYW4gYXJyYXkKKyAqIG92ZXJmbG93LgorICovCisjZGVmaW5lIEZPUl9FQUNIX0lPUkVRX1NF UlZFUihkLCBpZCwgcykgXAorICAgIGZvciAoIChpZCkgPSAwLCAocykgPSBHRVRfSU9SRVFfU0VS VkVSKGQsIDApOyBcCisgICAgICAgICAgKGlkKSA8IE1BWF9OUl9JT1JFUV9TRVJWRVJTOyBcCisg ICAgICAgICAgKHMpID0gZ2V0X2lvcmVxX3NlcnZlcihkLCArKyhpZCkpICkgXAorICAgICAgICBp ZiAoICFzICkgXAorICAgICAgICAgICAgY29udGludWU7IFwKKyAgICAgICAgZWxzZQorCiBzdGF0 aWMgaW9yZXFfdCAqZ2V0X2lvcmVxKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBzdHJ1Y3Qg dmNwdSAqdikKIHsKICAgICBzaGFyZWRfaW9wYWdlX3QgKnAgPSBzLT5pb3JlcS52YTsKQEAgLTQ3 LDEwICs4NSw5IEBAIGJvb2wgaHZtX2lvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAg c3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqczsKKyAgICB1bnNpZ25lZCBpbnQgaWQ7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICgg cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9z ZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAg Rk9SX0VBQ0hfSU9SRVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsKICAgICAgICAgc3RydWN0IGh2 bV9pb3JlcV92Y3B1ICpzdjsKIApAQCAtMTI3LDEwICsxNjQsOSBAQCBib29sIGhhbmRsZV9odm1f aW9fY29tcGxldGlvbihzdHJ1Y3QgdmNwdSAqdikKICAgICBzdHJ1Y3QgaHZtX3ZjcHVfaW8gKnZp byA9ICZ2LT5hcmNoLmh2bV92Y3B1Lmh2bV9pbzsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZl ciAqczsKICAgICBlbnVtIGh2bV9pb19jb21wbGV0aW9uIGlvX2NvbXBsZXRpb247CisgICAgdW5z aWduZWQgaW50IGlkOwogCi0gICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9S RVFfU0VSVkVSKGQsIGlkLCBzKQogICAgIHsKICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV92Y3B1 ICpzdjsKIApAQCAtMjQzLDEzICsyNzksMTIgQEAgc3RhdGljIGludCBodm1fbWFwX2lvcmVxX3Bh Z2UoCiBib29sIGlzX2lvcmVxX3NlcnZlcl9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2UpCiB7CiAgICAgY29uc3Qgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnM7CisgICAgdW5zaWduZWQgaW50IGlkOwogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKIAog ICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIu bG9jayk7CiAKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgRk9SX0VBQ0hfSU9SRVFfU0VSVkVS KGQsIGlkLCBzKQogICAgIHsKICAgICAgICAgaWYgKCAocy0+aW9yZXEudmEgJiYgcy0+aW9yZXEu cGFnZSA9PSBwYWdlKSB8fAogICAgICAgICAgICAgIChzLT5idWZpb3JlcS52YSAmJiBzLT5idWZp b3JlcS5wYWdlID09IHBhZ2UpICkKQEAgLTMwMiw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCBodm1f dXBkYXRlX2lvcmVxX2V2dGNobihzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKIH0KIAogc3Rh dGljIGludCBodm1faW9yZXFfc2VydmVyX2FkZF92Y3B1KHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVmYXVs dCwgc3RydWN0IHZjcHUgKnYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IGh2bV9pb3JlcV92Y3B1ICpzdjsKICAgICBp bnQgcmM7CkBAIC0zMzEsNyArMzY2LDcgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2Fk ZF92Y3B1KHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogICAgICAgICAgICAgZ290byBmYWls MzsKIAogICAgICAgICBzLT5idWZpb3JlcV9ldnRjaG4gPSByYzsKLSAgICAgICAgaWYgKCBpc19k ZWZhdWx0ICkKKyAgICAgICAgaWYgKCBJU19ERUZBVUxUKHMpICkKICAgICAgICAgICAgIGQtPmFy Y2guaHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX0JVRklPUkVRX0VWVENITl0gPQogICAgICAg ICAgICAgICAgIHMtPmJ1ZmlvcmVxX2V2dGNobjsKICAgICB9CkBAIC00MzEsNyArNDY2LDYgQEAg c3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKIH0KIAogc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX3NldHVwX3BhZ2VzKHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgaXNfZGVmYXVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGhhbmRsZV9idWZpb3JlcSkKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpk ID0gcy0+ZG9tYWluOwpAQCAtNDM5LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3Nl cnZlcl9zZXR1cF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICB1bnNpZ25l ZCBsb25nIGJ1ZmlvcmVxX2dmbiA9IGdmbl94KElOVkFMSURfR0ZOKTsKICAgICBpbnQgcmM7CiAK LSAgICBpZiAoIGlzX2RlZmF1bHQgKQorICAgIGlmICggSVNfREVGQVVMVChzKSApCiAgICAgewog ICAgICAgICAvKgogICAgICAgICAgKiBUaGUgZGVmYXVsdCBpb3JlcSBzZXJ2ZXIgbXVzdCBoYW5k bGUgYnVmZmVyZWQgaW9yZXFzLCBmb3IKQEAgLTQ2OCw4ICs1MDIsNyBAQCBzdGF0aWMgaW50IGh2 bV9pb3JlcV9zZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAg ICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX3VubWFwX3Bh Z2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBib29sIGlzX2RlZmF1bHQpCitzdGF0aWMgdm9pZCBodm1faW9yZXFf c2VydmVyX3VubWFwX3BhZ2VzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQogewogICAgIHN0 cnVjdCBkb21haW4gKmQgPSBzLT5kb21haW47CiAgICAgYm9vbCBoYW5kbGVfYnVmaW9yZXEgPSAh IXMtPmJ1ZmlvcmVxLnZhOwpAQCAtNDc5LDcgKzUxMiw3IEBAIHN0YXRpYyB2b2lkIGh2bV9pb3Jl cV9zZXJ2ZXJfdW5tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAKICAgICBo dm1fdW5tYXBfaW9yZXFfcGFnZShzLCBmYWxzZSk7CiAKLSAgICBpZiAoICFpc19kZWZhdWx0ICkK KyAgICBpZiAoICFJU19ERUZBVUxUKHMpICkKICAgICB7CiAgICAgICAgIGlmICggaGFuZGxlX2J1 ZmlvcmVxICkKICAgICAgICAgICAgIGh2bV9mcmVlX2lvcmVxX2dmbihkLCBzLT5idWZpb3JlcS5n Zm4pOwpAQCAtNDg4LDEyICs1MjEsMTEgQEAgc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl91 bm1hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICB9CiB9CiAKLXN0YXRp YyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNldHMoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgaXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9yYW5nZXNl dHMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CiAK LSAgICBpZiAoIGlzX2RlZmF1bHQgKQorICAgIGlmICggSVNfREVGQVVMVChzKSApCiAgICAgICAg IHJldHVybjsKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgTlJfSU9fUkFOR0VfVFlQRVM7IGkrKyAp CkBAIC01MDEsMTkgKzUzMywyMSBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2ZyZWVf cmFuZ2VzZXRzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogfQogCiBzdGF0aWMgaW50IGh2 bV9pb3JlcV9zZXJ2ZXJfYWxsb2NfcmFuZ2VzZXRzKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX2Rl ZmF1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2Vy dmlkX3QgaWQpCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgaW50IHJjOwogCi0gICAgaWYg KCBpc19kZWZhdWx0ICkKKyAgICBpZiAoIGlkID09IERFRkFVTFRfSU9TRVJWSUQgKQogICAgICAg ICBnb3RvIGRvbmU7CiAKKyAgICBBU1NFUlQoIUlTX0RFRkFVTFQocykpOworCiAgICAgZm9yICgg aSA9IDA7IGkgPCBOUl9JT19SQU5HRV9UWVBFUzsgaSsrICkKICAgICB7CiAgICAgICAgIGNoYXIg Km5hbWU7CiAKLSAgICAgICAgcmMgPSBhc3ByaW50ZigmbmFtZSwgImlvcmVxX3NlcnZlciAlZCAl cyIsIHMtPmlkLAorICAgICAgICByYyA9IGFzcHJpbnRmKCZuYW1lLCAiaW9yZXFfc2VydmVyICVk ICVzIiwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gWEVOX0RNT1BfSU9fUkFOR0Vf UE9SVCkgPyAicG9ydCIgOgogICAgICAgICAgICAgICAgICAgICAgIChpID09IFhFTl9ETU9QX0lP X1JBTkdFX01FTU9SWSkgPyAibWVtb3J5IiA6CiAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0g WEVOX0RNT1BfSU9fUkFOR0VfUENJKSA/ICJwY2kiIDoKQEAgLTUzNywxMyArNTcxLDEyIEBAIHN0 YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19yYW5nZXNldHMoc3RydWN0IGh2bV9pb3Jl cV9zZXJ2ZXIgKnMsCiAgICAgcmV0dXJuIDA7CiAKICBmYWlsOgotICAgIGh2bV9pb3JlcV9zZXJ2 ZXJfZnJlZV9yYW5nZXNldHMocywgZmFsc2UpOworICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZnJlZV9y YW5nZXNldHMocyk7CiAKICAgICByZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyB2b2lkIGh2bV9pb3Jl cV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19kZWZhdWx0KQorc3RhdGljIHZvaWQgaHZt X2lvcmVxX3NlcnZlcl9lbmFibGUoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB7CiAgICAg c3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3ZjcHUg KnN2OwpAQCAtNTU0LDcgKzU4Nyw3IEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZW5h YmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogICAgIGlmICggcy0+ZW5hYmxlZCApCiAg ICAgICAgIGdvdG8gZG9uZTsKIAotICAgIGlmICggIWlzX2RlZmF1bHQgKQorICAgIGlmICggIUlT X0RFRkFVTFQocykgKQogICAgIHsKICAgICAgICAgaHZtX3JlbW92ZV9pb3JlcV9nZm4oZCwgJnMt PmlvcmVxKTsKIApAQCAtNTczLDggKzYwNiw3IEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2 ZXJfZW5hYmxlKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAogICAgIHNwaW5fdW5sb2NrKCZz LT5sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJvb2wgaXNfZGVmYXVsdCkKK3N0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJs ZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0g cy0+ZG9tYWluOwogICAgIGJvb2wgaGFuZGxlX2J1ZmlvcmVxID0gISFzLT5idWZpb3JlcS52YTsK QEAgLTU4NCw3ICs2MTYsNyBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2Rpc2FibGUo c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgaWYgKCAhcy0+ZW5hYmxlZCApCiAgICAg ICAgIGdvdG8gZG9uZTsKIAotICAgIGlmICggIWlzX2RlZmF1bHQgKQorICAgIGlmICggIUlTX0RF RkFVTFQocykgKQogICAgIHsKICAgICAgICAgaWYgKCBoYW5kbGVfYnVmaW9yZXEgKQogICAgICAg ICAgICAgaHZtX2FkZF9pb3JlcV9nZm4oZCwgJnMtPmJ1ZmlvcmVxKTsKQEAgLTYwMCwxMyArNjMy LDExIEBAIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqcywKIAogc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZG9tYWluICpkLCBkb21pZF90IGRvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBpc19kZWZhdWx0LCBpbnQgYnVmaW9yZXFfaGFuZGxpbmcsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZF90IGlkKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGJ1ZmlvcmVxX2hhbmRsaW5nLCBpb3NlcnZpZF90IGlkKQog ewogICAgIHN0cnVjdCB2Y3B1ICp2OwogICAgIGludCByYzsKIAotICAgIHMtPmlkID0gaWQ7CiAg ICAgcy0+ZG9tYWluID0gZDsKICAgICBzLT5kb21pZCA9IGRvbWlkOwogCkBAIC02MTQsNyArNjQ0 LDcgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsCiAgICAgSU5JVF9MSVNUX0hFQUQoJnMtPmlvcmVxX3ZjcHVfbGlzdCk7CiAgICAg c3Bpbl9sb2NrX2luaXQoJnMtPmJ1ZmlvcmVxX2xvY2spOwogCi0gICAgcmMgPSBodm1faW9yZXFf c2VydmVyX2FsbG9jX3Jhbmdlc2V0cyhzLCBpc19kZWZhdWx0KTsKKyAgICByYyA9IGh2bV9pb3Jl cV9zZXJ2ZXJfYWxsb2NfcmFuZ2VzZXRzKHMsIGlkKTsKICAgICBpZiAoIHJjICkKICAgICAgICAg cmV0dXJuIHJjOwogCkBAIC02MjIsMTMgKzY1MiwxMyBAQCBzdGF0aWMgaW50IGh2bV9pb3JlcV9z ZXJ2ZXJfaW5pdChzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKICAgICAgICAgcy0+YnVmaW9y ZXFfYXRvbWljID0gdHJ1ZTsKIAogICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9zZXR1cF9wYWdl cygKLSAgICAgICAgICAgICBzLCBpc19kZWZhdWx0LCBidWZpb3JlcV9oYW5kbGluZyAhPSBIVk1f SU9SRVFTUlZfQlVGSU9SRVFfT0ZGKTsKKyAgICAgICAgICAgICBzLCBidWZpb3JlcV9oYW5kbGlu ZyAhPSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfT0ZGKTsKICAgICBpZiAoIHJjICkKICAgICAgICAg Z290byBmYWlsX21hcDsKIAogICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICB7Ci0gICAg ICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hZGRfdmNwdShzLCBpc19kZWZhdWx0LCB2KTsKKyAg ICAgICAgcmMgPSBodm1faW9yZXFfc2VydmVyX2FkZF92Y3B1KHMsIHYpOwogICAgICAgICBpZiAo IHJjICkKICAgICAgICAgICAgIGdvdG8gZmFpbF9hZGQ7CiAgICAgfQpAQCAtNjM3LDQ3ICs2Njcs MjAgQEAgc3RhdGljIGludCBodm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsCiAKICBmYWlsX2FkZDoKICAgICBodm1faW9yZXFfc2VydmVyX3JlbW92ZV9hbGxf dmNwdXMocyk7Ci0gICAgaHZtX2lvcmVxX3NlcnZlcl91bm1hcF9wYWdlcyhzLCBpc19kZWZhdWx0 KTsKKyAgICBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHMpOwogCiAgZmFpbF9tYXA6Ci0g ICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhzLCBpc19kZWZhdWx0KTsKKyAgICBo dm1faW9yZXFfc2VydmVyX2ZyZWVfcmFuZ2VzZXRzKHMpOwogCiAgICAgcmV0dXJuIHJjOwogfQog Ci1zdGF0aWMgdm9pZCBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZGVm YXVsdCkKK3N0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZGVpbml0KHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzKQogewogICAgIEFTU0VSVCghcy0+ZW5hYmxlZCk7CiAgICAgaHZtX2lvcmVx X3NlcnZlcl9yZW1vdmVfYWxsX3ZjcHVzKHMpOwotICAgIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBf cGFnZXMocywgaXNfZGVmYXVsdCk7Ci0gICAgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0 cyhzLCBpc19kZWZhdWx0KTsKLX0KLQotc3RhdGljIGlvc2VydmlkX3QgbmV4dF9pb3NlcnZpZChz dHJ1Y3QgZG9tYWluICpkKQotewotICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwotICAg IGlvc2VydmlkX3QgaWQ7Ci0KLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jaykpOwotCi0gICAgaWQgPSBkLT5hcmNoLmh2bV9kb21h aW4uaW9yZXFfc2VydmVyLmlkOwotCi0gYWdhaW46Ci0gICAgaWQrKzsKLQotICAgIC8qIENoZWNr IGZvciB1bmlxdWVuZXNzICovCi0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3Qs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAg aWYgKCBpZCA9PSBzLT5pZCApCi0gICAgICAgICAgICBnb3RvIGFnYWluOwotICAgIH0KLQotICAg IGQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuaWQgPSBpZDsKLQotICAgIHJldHVybiBp ZDsKKyAgICBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKHMpOworICAgIGh2bV9pb3JlcV9z ZXJ2ZXJfZnJlZV9yYW5nZXNldHMocyk7CiB9CiAKIGludCBodm1fY3JlYXRlX2lvcmVxX3NlcnZl cihzdHJ1Y3QgZG9tYWluICpkLCBkb21pZF90IGRvbWlkLApAQCAtNjg1LDUyICs2ODgsNjQgQEAg aW50IGh2bV9jcmVhdGVfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGRvbWlkX3QgZG9t aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zZXJ2aWRfdCAqaWQpCiB7CiAgICAg c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgdW5zaWduZWQgaW50IGk7CiAgICAgaW50 IHJjOwogCiAgICAgaWYgKCBidWZpb3JlcV9oYW5kbGluZyA+IEhWTV9JT1JFUVNSVl9CVUZJT1JF UV9BVE9NSUMgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgIHJjID0gLUVOT01FTTsK ICAgICBzID0geHphbGxvYyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlcik7CiAgICAgaWYgKCAhcyAp Ci0gICAgICAgIGdvdG8gZmFpbDE7CisgICAgICAgIHJldHVybiAtRU5PTUVNOwogCiAgICAgZG9t YWluX3BhdXNlKGQpOwogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1FRVhJU1Q7Ci0gICAgaWYgKCBpc19k ZWZhdWx0ICYmIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciAhPSBOVUxM ICkKLSAgICAgICAgZ290byBmYWlsMjsKLQotICAgIHJjID0gaHZtX2lvcmVxX3NlcnZlcl9pbml0 KHMsIGQsIGRvbWlkLCBpc19kZWZhdWx0LCBidWZpb3JlcV9oYW5kbGluZywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuZXh0X2lvc2VydmlkKGQpKTsKLSAgICBpZiAoIHJjICkKLSAg ICAgICAgZ290byBmYWlsMzsKLQotICAgIGxpc3RfYWRkKCZzLT5saXN0X2VudHJ5LAotICAgICAg ICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QpOwotCiAgICAgaWYg KCBpc19kZWZhdWx0ICkKICAgICB7Ci0gICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0 X2lvcmVxX3NlcnZlciA9IHM7Ci0gICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHMsIHRy dWUpOworICAgICAgICBpID0gREVGQVVMVF9JT1NFUlZJRDsKKworICAgICAgICByYyA9IC1FRVhJ U1Q7CisgICAgICAgIGlmICggR0VUX0lPUkVRX1NFUlZFUihkLCBpKSApCisgICAgICAgICAgICBn b3RvIGZhaWw7CiAgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGZvciAoIGkgPSAwOyBp IDwgTUFYX05SX0lPUkVRX1NFUlZFUlM7IGkrKyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm ICggaSAhPSBERUZBVUxUX0lPU0VSVklEICYmICFHRVRfSU9SRVFfU0VSVkVSKGQsIGkpICkKKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gLUVOT1NQQzsK KyAgICAgICAgaWYgKCBpID49IE1BWF9OUl9JT1JFUV9TRVJWRVJTICkKKyAgICAgICAgICAgIGdv dG8gZmFpbDsKKyAgICB9CisKKyAgICBzZXRfaW9yZXFfc2VydmVyKGQsIGksIHMpOworCisgICAg cmMgPSBodm1faW9yZXFfc2VydmVyX2luaXQocywgZCwgZG9taWQsIGJ1ZmlvcmVxX2hhbmRsaW5n LCBpKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKCBpID09 IERFRkFVTFRfSU9TRVJWSUQgKQorICAgICAgICBodm1faW9yZXFfc2VydmVyX2VuYWJsZShzKTsK IAogICAgIGlmICggaWQgKQotICAgICAgICAqaWQgPSBzLT5pZDsKKyAgICAgICAgKmlkID0gaTsK IAogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5sb2NrKTsKICAgICBkb21haW5fdW5wYXVzZShkKTsKIAogICAgIHJldHVybiAwOwogCi0g ZmFpbDM6Ci0gZmFpbDI6CisgZmFpbDoKKyAgICBzZXRfaW9yZXFfc2VydmVyKGQsIGksIE5VTEwp OworCiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFf c2VydmVyLmxvY2spOwogICAgIGRvbWFpbl91bnBhdXNlKGQpOwogCiAgICAgeGZyZWUocyk7Ci0g ZmFpbDE6CiAgICAgcmV0dXJuIHJjOwogfQogCkBAIC03MzksMzcgKzc1NCwzNCBAQCBpbnQgaHZt X2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQpCiAg ICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CiAgICAgaW50IHJjOwogCi0gICAgc3Bpbl9s b2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKyAg ICBpZiAoIGlkID09IERFRkFVTFRfSU9TRVJWSUQgKQorICAgICAgICByZXR1cm4gLUVQRVJNOwog Ci0gICAgcmMgPSAtRU5PRU5UOwotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0 LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKLSAgICB7Ci0gICAgICAg IGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIgKQotICAg ICAgICAgICAgY29udGludWU7CisgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAotICAgICAgICBpZiAoIHMtPmlkICE9IGlkICkK LSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHMgPSBnZXRfaW9yZXFfc2VydmVyKGQsIGlkKTsK IAotICAgICAgICBkb21haW5fcGF1c2UoZCk7CisgICAgcmMgPSAtRU5PRU5UOworICAgIGlmICgg IXMgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICBwMm1fc2V0X2lvcmVxX3NlcnZlcihk LCAwLCBzKTsKKyAgICBBU1NFUlQoIUlTX0RFRkFVTFQocykpOwogCi0gICAgICAgIGh2bV9pb3Jl cV9zZXJ2ZXJfZGlzYWJsZShzLCBmYWxzZSk7CisgICAgZG9tYWluX3BhdXNlKGQpOwogCi0gICAg ICAgIGxpc3RfZGVsKCZzLT5saXN0X2VudHJ5KTsKKyAgICBwMm1fc2V0X2lvcmVxX3NlcnZlcihk LCAwLCBzKTsKIAotICAgICAgICBodm1faW9yZXFfc2VydmVyX2RlaW5pdChzLCBmYWxzZSk7Cisg ICAgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHMpOworICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGVp bml0KHMpOwogCi0gICAgICAgIGRvbWFpbl91bnBhdXNlKGQpOworICAgIGRvbWFpbl91bnBhdXNl KGQpOwogCi0gICAgICAgIHhmcmVlKHMpOworICAgIHNldF9pb3JlcV9zZXJ2ZXIoZCwgaWQsIE5V TEwpOworICAgIHhmcmVlKHMpOwogCi0gICAgICAgIHJjID0gMDsKLSAgICAgICAgYnJlYWs7Ci0g ICAgfQorICAgIHJjID0gMDsKIAorIG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQt PmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKICAgICByZXR1cm4gcmM7CkBA IC03ODMsMzEgKzc5NSwzMCBAQCBpbnQgaHZtX2dldF9pb3JlcV9zZXJ2ZXJfaW5mbyhzdHJ1Y3Qg ZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpz OwogICAgIGludCByYzsKIAorICAgIGlmICggaWQgPT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAg ICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKwogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQtPmFy Y2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKLSAgICByYyA9IC1FTk9FTlQ7Ci0g ICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZk LT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZt X2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAg ICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7CiAKLSAgICAgICAgaWYgKCBzLT5pZCAhPSBp ZCApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICByYyA9IC1FTk9FTlQ7CisgICAgaWYgKCAh cyApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgICppb3JlcV9nZm4gPSBzLT5pb3JlcS5n Zm47CisgICAgQVNTRVJUKCFJU19ERUZBVUxUKHMpKTsKIAotICAgICAgICBpZiAoIHMtPmJ1Zmlv cmVxLnZhICE9IE5VTEwgKQotICAgICAgICB7Ci0gICAgICAgICAgICAqYnVmaW9yZXFfZ2ZuID0g cy0+YnVmaW9yZXEuZ2ZuOwotICAgICAgICAgICAgKmJ1ZmlvcmVxX3BvcnQgPSBzLT5idWZpb3Jl cV9ldnRjaG47Ci0gICAgICAgIH0KKyAgICAqaW9yZXFfZ2ZuID0gcy0+aW9yZXEuZ2ZuOwogCi0g ICAgICAgIHJjID0gMDsKLSAgICAgICAgYnJlYWs7CisgICAgaWYgKCBzLT5idWZpb3JlcS52YSAh PSBOVUxMICkKKyAgICB7CisgICAgICAgICpidWZpb3JlcV9nZm4gPSBzLT5idWZpb3JlcS5nZm47 CisgICAgICAgICpidWZpb3JlcV9wb3J0ID0gcy0+YnVmaW9yZXFfZXZ0Y2huOwogICAgIH0KIAor ICAgIHJjID0gMDsKKworIG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2gu aHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKICAgICByZXR1cm4gcmM7CkBAIC04MTgs NDggKzgyOSw0NiBAQCBpbnQgaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0 IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBlbmQpCiB7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7 CisgICAgc3RydWN0IHJhbmdlc2V0ICpyOwogICAgIGludCByYzsKIAorICAgIGlmICggaWQgPT0g REVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKKwogICAgIHNw aW5fbG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7 CiAKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZlcihkLCBpZCk7CisKICAgICByYyA9IC1FTk9FTlQ7 Ci0gICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIGxpc3RfZW50cnkgKQotICAgIHsKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2gu aHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsK KyAgICBpZiAoICFzICkKKyAgICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgaWYgKCBzLT5pZCA9 PSBpZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCByYW5nZXNldCAqcjsKKyAgICBB U1NFUlQoIUlTX0RFRkFVTFQocykpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKCB0eXBlICkKLSAg ICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9SVDoKLSAg ICAgICAgICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfTUVNT1JZOgotICAgICAgICAgICAgY2Fz ZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6Ci0gICAgICAgICAgICAgICAgciA9IHMtPnJhbmdlW3R5 cGVdOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAoIHR5cGUgKQorICAgIHsK KyAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BPUlQ6CisgICAgY2FzZSBYRU5fRE1PUF9JT19S QU5HRV9NRU1PUlk6CisgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9QQ0k6CisgICAgICAgIHIg PSBzLT5yYW5nZVt0eXBlXTsKKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGRlZmF1bHQ6 Ci0gICAgICAgICAgICAgICAgciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgciA9IE5VTEw7CisgICAgICAgIGJyZWFr OworICAgIH0KIAotICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgaWYgKCAh ciApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRUlOVkFMOworICAgIGlmICgg IXIgKQorICAgICAgICBnb3RvIG91dDsKIAotICAgICAgICAgICAgcmMgPSAtRUVYSVNUOwotICAg ICAgICAgICAgaWYgKCByYW5nZXNldF9vdmVybGFwc19yYW5nZShyLCBzdGFydCwgZW5kKSApCi0g ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRUVYSVNUOworICAgIGlmICggcmFuZ2Vz ZXRfb3ZlcmxhcHNfcmFuZ2Uociwgc3RhcnQsIGVuZCkgKQorICAgICAgICBnb3RvIG91dDsKIAot ICAgICAgICAgICAgcmMgPSByYW5nZXNldF9hZGRfcmFuZ2Uociwgc3RhcnQsIGVuZCk7Ci0gICAg ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICByYyA9IHJhbmdlc2V0X2FkZF9y YW5nZShyLCBzdGFydCwgZW5kKTsKIAorIG91dDoKICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUo JmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKICAgICByZXR1cm4gcmM7 CkBAIC04NzAsNDggKzg3OSw0NiBAQCBpbnQgaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFf c2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCkKIHsKICAgICBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqczsKKyAgICBzdHJ1Y3QgcmFuZ2VzZXQgKnI7CiAgICAgaW50IHJjOwog CisgICAgaWYgKCBpZCA9PSBERUZBVUxUX0lPU0VSVklEICkKKyAgICAgICAgcmV0dXJuIC1FT1BO T1RTVVBQOworCiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlv cmVxX3NlcnZlci5sb2NrKTsKIAorICAgIHMgPSBnZXRfaW9yZXFfc2VydmVyKGQsIGlkKTsKKwog ICAgIHJjID0gLUVOT0VOVDsKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCi0gICAgewotICAgICAgICBp ZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKLSAgICAg ICAgICAgIGNvbnRpbnVlOworICAgIGlmICggIXMgKQorICAgICAgICBnb3RvIG91dDsKIAotICAg ICAgICBpZiAoIHMtPmlkID09IGlkICkKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IHJh bmdlc2V0ICpyOworICAgIEFTU0VSVCghSVNfREVGQVVMVChzKSk7CiAKLSAgICAgICAgICAgIHN3 aXRjaCAoIHR5cGUgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBYRU5fRE1PUF9J T19SQU5HRV9QT1JUOgotICAgICAgICAgICAgY2FzZSBYRU5fRE1PUF9JT19SQU5HRV9NRU1PUlk6 Ci0gICAgICAgICAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdFX1BDSToKLSAgICAgICAgICAgICAg ICByID0gcy0+cmFuZ2VbdHlwZV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgc3dpdGNo ICggdHlwZSApCisgICAgeworICAgIGNhc2UgWEVOX0RNT1BfSU9fUkFOR0VfUE9SVDoKKyAgICBj YXNlIFhFTl9ETU9QX0lPX1JBTkdFX01FTU9SWToKKyAgICBjYXNlIFhFTl9ETU9QX0lPX1JBTkdF X1BDSToKKyAgICAgICAgciA9IHMtPnJhbmdlW3R5cGVdOworICAgICAgICBicmVhazsKIAotICAg ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByID0gTlVMTDsKLSAgICAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByID0gTlVM TDsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgICAgICByYyA9IC1FSU5WQUw7Ci0g ICAgICAgICAgICBpZiAoICFyICkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICByYyA9IC1F SU5WQUw7CisgICAgaWYgKCAhciApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgICAgICBy YyA9IC1FTk9FTlQ7Ci0gICAgICAgICAgICBpZiAoICFyYW5nZXNldF9jb250YWluc19yYW5nZShy LCBzdGFydCwgZW5kKSApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgcmMgPSAtRU5PRU5U OworICAgIGlmICggIXJhbmdlc2V0X2NvbnRhaW5zX3JhbmdlKHIsIHN0YXJ0LCBlbmQpICkKKyAg ICAgICAgZ290byBvdXQ7CiAKLSAgICAgICAgICAgIHJjID0gcmFuZ2VzZXRfcmVtb3ZlX3Jhbmdl KHIsIHN0YXJ0LCBlbmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Cisg ICAgcmMgPSByYW5nZXNldF9yZW1vdmVfcmFuZ2Uociwgc3RhcnQsIGVuZCk7CiAKKyBvdXQ6CiAg ICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVy LmxvY2spOwogCiAgICAgcmV0dXJuIHJjOwpAQCAtOTMxLDYgKzkzOCw5IEBAIGludCBodm1fbWFw X21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlk LAogICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwogICAgIGludCByYzsKIAorICAgIGlm ICggaWQgPT0gREVGQVVMVF9JT1NFUlZJRCApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK KwogICAgIGlmICggdHlwZSAhPSBIVk1NRU1faW9yZXFfc2VydmVyICkKICAgICAgICAgcmV0dXJu IC1FSU5WQUw7CiAKQEAgLTkzOSwxOSArOTQ5LDE0IEBAIGludCBodm1fbWFwX21lbV90eXBlX3Rv X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogCiAgICAgc3Bp bl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsK IAotICAgIHJjID0gLUVOT0VOVDsKLSAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlz dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCi0gICAgewotICAgICAg ICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKLSAg ICAgICAgICAgIGNvbnRpbnVlOworICAgIHMgPSBnZXRfaW9yZXFfc2VydmVyKGQsIGlkKTsKIAot ICAgICAgICBpZiAoIHMtPmlkID09IGlkICkKLSAgICAgICAgewotICAgICAgICAgICAgcmMgPSBw Mm1fc2V0X2lvcmVxX3NlcnZlcihkLCBmbGFncywgcyk7Ci0gICAgICAgICAgICBicmVhazsKLSAg ICAgICAgfQorICAgIGlmICggIXMgKQorICAgICAgICByYyA9IC1FTk9FTlQ7CisgICAgZWxzZQor ICAgIHsKKyAgICAgICAgQVNTRVJUKCFJU19ERUZBVUxUKHMpKTsKKyAgICAgICAgcmMgPSBwMm1f c2V0X2lvcmVxX3NlcnZlcihkLCBmbGFncywgcyk7CiAgICAgfQogCiAgICAgc3Bpbl91bmxvY2tf cmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxvY2spOwpAQCAtOTcw LDM4ICs5NzUsMzQgQEAgaW50IGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKHN0cnVj dCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiBpbnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3Rh dGUoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGVuYWJsZWQpCiB7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7 CisgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CiAgICAgaW50IHJjOwogCisgICAgaWYg KCBpZCA9PSBERUZBVUxUX0lPU0VSVklEICkKKyAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwor CiAgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZl ci5sb2NrKTsKIAotICAgIHJjID0gLUVOT0VOVDsKLSAgICBsaXN0X2Zvcl9lYWNoICggZW50cnks Ci0gICAgICAgICAgICAgICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxp c3QgKQotICAgIHsKLSAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMgPSBsaXN0X2Vu dHJ5KGVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5KTsKKyAgICBzID0gZ2V0X2lvcmVxX3NlcnZl cihkLCBpZCk7CiAKLSAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0 X2lvcmVxX3NlcnZlciApCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICByYyA9IC1FTk9FTlQ7 CisgICAgaWYgKCAhcyApCisgICAgICAgIGdvdG8gb3V0OwogCi0gICAgICAgIGlmICggcy0+aWQg IT0gaWQgKQotICAgICAgICAgICAgY29udGludWU7CisgICAgQVNTRVJUKCFJU19ERUZBVUxUKHMp KTsKIAotICAgICAgICBkb21haW5fcGF1c2UoZCk7CisgICAgZG9tYWluX3BhdXNlKGQpOwogCi0g ICAgICAgIGlmICggZW5hYmxlZCApCi0gICAgICAgICAgICBodm1faW9yZXFfc2VydmVyX2VuYWJs ZShzLCBmYWxzZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJf ZGlzYWJsZShzLCBmYWxzZSk7CisgICAgaWYgKCBlbmFibGVkICkKKyAgICAgICAgaHZtX2lvcmVx X3NlcnZlcl9lbmFibGUocyk7CisgICAgZWxzZQorICAgICAgICBodm1faW9yZXFfc2VydmVyX2Rp c2FibGUocyk7CiAKLSAgICAgICAgZG9tYWluX3VucGF1c2UoZCk7CisgICAgZG9tYWluX3VucGF1 c2UoZCk7CiAKLSAgICAgICAgcmMgPSAwOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgcmMg PSAwOwogCisgb3V0OgogICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9t YWluLmlvcmVxX3NlcnZlci5sb2NrKTsKICAgICByZXR1cm4gcmM7CiB9CkBAIC0xMDA5LDE3ICsx MDEwLDE0IEBAIGludCBodm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZShzdHJ1Y3QgZG9tYWluICpk LCBpb3NlcnZpZF90IGlkLAogaW50IGh2bV9hbGxfaW9yZXFfc2VydmVyc19hZGRfdmNwdShzdHJ1 Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqczsKKyAgICB1bnNpZ25lZCBpbnQgaWQ7CiAgICAgaW50IHJjOwogCiAgICAgc3Bpbl9s b2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIAot ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAm ZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAgICAg ICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICBGT1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMp CiAgICAgewotICAgICAgICBib29sIGlzX2RlZmF1bHQgPSAocyA9PSBkLT5hcmNoLmh2bV9kb21h aW4uZGVmYXVsdF9pb3JlcV9zZXJ2ZXIpOwotCi0gICAgICAgIHJjID0gaHZtX2lvcmVxX3NlcnZl cl9hZGRfdmNwdShzLCBpc19kZWZhdWx0LCB2KTsKKyAgICAgICAgcmMgPSBodm1faW9yZXFfc2Vy dmVyX2FkZF92Y3B1KHMsIHYpOwogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgIGdvdG8g ZmFpbDsKICAgICB9CkBAIC0xMDI5LDEwICsxMDI3LDE1IEBAIGludCBodm1fYWxsX2lvcmVxX3Nl cnZlcnNfYWRkX3ZjcHUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZjcHUgKnYpCiAgICAgcmV0 dXJuIDA7CiAKICBmYWlsOgotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICB3aGlsZSAoIGlkLS0g IT0gMCApCisgICAgeworICAgICAgICBzID0gR0VUX0lPUkVRX1NFUlZFUihkLCBpZCk7CisKKyAg ICAgICAgaWYgKCAhcyApCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBodm1faW9y ZXFfc2VydmVyX3JlbW92ZV92Y3B1KHMsIHYpOworICAgIH0KIAogICAgIHNwaW5fdW5sb2NrX3Jl Y3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKIApAQCAtMTA0 MiwxMiArMTA0NSwxMSBAQCBpbnQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX2FkZF92Y3B1KHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogdm9pZCBodm1fYWxsX2lvcmVxX3NlcnZlcnNf cmVtb3ZlX3ZjcHUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgdW5zaWduZWQgaW50IGlkOwogCiAgICAgc3Bp bl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsK IAotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAgICAgICAgICAg ICAgICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICBGT1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQs IHMpCiAgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfcmVtb3ZlX3ZjcHUocywgdik7CiAKICAgICBz cGluX3VubG9ja19yZWN1cnNpdmUoJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9j ayk7CkBAIC0xMDU1LDI4ICsxMDU3LDE5IEBAIHZvaWQgaHZtX2FsbF9pb3JlcV9zZXJ2ZXJzX3Jl bW92ZV92Y3B1KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogCiB2b2lkIGh2bV9k ZXN0cm95X2FsbF9pb3JlcV9zZXJ2ZXJzKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsICpuZXh0OworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzOworICAgIHVuc2lnbmVkIGludCBpZDsKIAogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJmQt PmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CiAKICAgICAvKiBObyBuZWVkIHRv IGRvbWFpbl9wYXVzZSgpIGFzIHRoZSBkb21haW4gaXMgYmVpbmcgdG9ybiBkb3duICovCiAKLSAg ICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUgKCBzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5leHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaXN0X2VudHJ5ICkKKyAgICBGT1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpCiAgICAg ewotICAgICAgICBib29sIGlzX2RlZmF1bHQgPSAocyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVm YXVsdF9pb3JlcV9zZXJ2ZXIpOwotCi0gICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShz LCBpc19kZWZhdWx0KTsKLQotICAgICAgICBpZiAoIGlzX2RlZmF1bHQgKQotICAgICAgICAgICAg ZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyID0gTlVMTDsKLQotICAgICAg ICBsaXN0X2RlbCgmcy0+bGlzdF9lbnRyeSk7Ci0KLSAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9k ZWluaXQocywgaXNfZGVmYXVsdCk7CisgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShz KTsKKyAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kZWluaXQocyk7CiAKKyAgICAgICAgc2V0X2lv cmVxX3NlcnZlcihkLCBpZCwgTlVMTCk7CiAgICAgICAgIHhmcmVlKHMpOwogICAgIH0KIApAQCAt MTExMSw3ICsxMTA0LDcgQEAgaW50IGh2bV9zZXRfZG1fZG9tYWluKHN0cnVjdCBkb21haW4gKmQs IGRvbWlkX3QgZG9taWQpCiAgICAgICogc3RpbGwgYmUgc2V0IGFuZCB0aHVzLCB3aGVuIHRoZSBz ZXJ2ZXIgaXMgY3JlYXRlZCwgaXQgd2lsbCBoYXZlCiAgICAgICogdGhlIGNvcnJlY3QgZG9taWQu CiAgICAgICovCi0gICAgcyA9IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZl cjsKKyAgICBzID0gR0VUX0lPUkVRX1NFUlZFUihkLCBERUZBVUxUX0lPU0VSVklEKTsKICAgICBp ZiAoICFzICkKICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMTY0LDEyICsxMTU3LDEwIEBAIHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9t YWluICpkLAogICAgIHVpbnQzMl90IGNmODsKICAgICB1aW50OF90IHR5cGU7CiAgICAgdWludDY0 X3QgYWRkcjsKLQotICAgIGlmICggbGlzdF9lbXB0eSgmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVx X3NlcnZlci5saXN0KSApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHVuc2lnbmVkIGludCBp ZDsKIAogICAgIGlmICggcC0+dHlwZSAhPSBJT1JFUV9UWVBFX0NPUFkgJiYgcC0+dHlwZSAhPSBJ T1JFUV9UWVBFX1BJTyApCi0gICAgICAgIHJldHVybiBkLT5hcmNoLmh2bV9kb21haW4uZGVmYXVs dF9pb3JlcV9zZXJ2ZXI7CisgICAgICAgIHJldHVybiBHRVRfSU9SRVFfU0VSVkVSKGQsIERFRkFV TFRfSU9TRVJWSUQpOwogCiAgICAgY2Y4ID0gZC0+YXJjaC5odm1fZG9tYWluLnBjaV9jZjg7CiAK QEAgLTEyMDksMTYgKzEyMDAsMTEgQEAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKmh2bV9zZWxl Y3RfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIGFkZHIgPSBwLT5hZGRy OwogICAgIH0KIAotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICBGT1JfRUFDSF9JT1JFUV9TRVJW RVIoZCwgaWQsIHMpCiAgICAgewogICAgICAgICBzdHJ1Y3QgcmFuZ2VzZXQgKnI7CiAKLSAgICAg ICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCi0g ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoICFzLT5lbmFibGVkICkKKyAgICAg ICAgaWYgKCBJU19ERUZBVUxUKHMpICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg IHIgPSBzLT5yYW5nZVt0eXBlXTsKQEAgLTEyNTEsNyArMTIzNyw3IEBAIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAogICAg ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGQtPmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lv cmVxX3NlcnZlcjsKKyAgICByZXR1cm4gR0VUX0lPUkVRX1NFUlZFUihkLCBERUZBVUxUX0lPU0VS VklEKTsKIH0KIAogc3RhdGljIGludCBodm1fc2VuZF9idWZmZXJlZF9pb3JlcShzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcywgaW9yZXFfdCAqcCkKQEAgLTE0MTAsMTMgKzEzOTYsMTMgQEAgdW5z aWduZWQgaW50IGh2bV9icm9hZGNhc3RfaW9yZXEoaW9yZXFfdCAqcCwgYm9vbCBidWZmZXJlZCkK IHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOwogICAgIHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzOwotICAgIHVuc2lnbmVkIGludCBmYWlsZWQgPSAwOworICAgIHVu c2lnbmVkIGludCBpZCwgZmFpbGVkID0gMDsKIAotICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBz LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3Nl cnZlci5saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2VudHJ5ICkKKyAgICBG T1JfRUFDSF9JT1JFUV9TRVJWRVIoZCwgaWQsIHMpCisgICAgewogICAgICAgICBpZiAoIGh2bV9z ZW5kX2lvcmVxKHMsIHAsIGJ1ZmZlcmVkKSA9PSBYODZFTVVMX1VOSEFORExFQUJMRSApCiAgICAg ICAgICAgICBmYWlsZWQrKzsKKyAgICB9CiAKICAgICByZXR1cm4gZmFpbGVkOwogfQpAQCAtMTQz Niw3ICsxNDIyLDYgQEAgc3RhdGljIGludCBodm1fYWNjZXNzX2NmOCgKIHZvaWQgaHZtX2lvcmVx X2luaXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzcGluX2xvY2tfaW5pdCgmZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKLSAgICBJTklUX0xJU1RfSEVBRCgmZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5saXN0KTsKIAogICAgIHJlZ2lzdGVyX3BvcnRpb19o YW5kbGVyKGQsIDB4Y2Y4LCA0LCBodm1fYWNjZXNzX2NmOCk7CiB9CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L2h2bS9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2Rv bWFpbi5oCmluZGV4IDdmMTI4YzA1ZmYuLmUxN2JiZTQwMDQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2Rv bWFpbi5oCkBAIC02MCw3ICs2MCw2IEBAIHN0cnVjdCBodm1faW9yZXFfc2VydmVyIHsKIAogICAg IC8qIERvbWFpbiBpZCBvZiBlbXVsYXRpbmcgZG9tYWluICovCiAgICAgZG9taWRfdCAgICAgICAg ICAgICAgICBkb21pZDsKLSAgICBpb3NlcnZpZF90ICAgICAgICAgICAgIGlkOwogICAgIHN0cnVj dCBodm1faW9yZXFfcGFnZSAgaW9yZXE7CiAgICAgc3RydWN0IGxpc3RfaGVhZCAgICAgICBpb3Jl cV92Y3B1X2xpc3Q7CiAgICAgc3RydWN0IGh2bV9pb3JlcV9wYWdlICBidWZpb3JlcTsKQEAgLTEw MCw2ICs5OSw5IEBAIHN0cnVjdCBodm1fcGlfb3BzIHsKICAgICB2b2lkICgqZG9fcmVzdW1lKShz dHJ1Y3QgdmNwdSAqdik7CiB9OwogCisjZGVmaW5lIE1BWF9OUl9JT1JFUV9TRVJWRVJTIDgKKyNk ZWZpbmUgREVGQVVMVF9JT1NFUlZJRCAwCisKIHN0cnVjdCBodm1fZG9tYWluIHsKICAgICAvKiBH dWVzdCBwYWdlIHJhbmdlIHVzZWQgZm9yIG5vbi1kZWZhdWx0IGlvcmVxIHNlcnZlcnMgKi8KICAg ICBzdHJ1Y3QgewpAQCAtMTA5LDExICsxMTEsOSBAQCBzdHJ1Y3QgaHZtX2RvbWFpbiB7CiAKICAg ICAvKiBMb2NrIHByb3RlY3RzIGFsbCBvdGhlciB2YWx1ZXMgaW4gdGhlIHN1Yi1zdHJ1Y3QgYW5k IHRoZSBkZWZhdWx0ICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgc3BpbmxvY2tfdCAgICAgICBs b2NrOwotICAgICAgICBpb3NlcnZpZF90ICAgICAgIGlkOwotICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7CisgICAgICAgIHNwaW5sb2NrX3QgICAgICAgICAgICAgIGxvY2s7CisgICAgICAg IHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzZXJ2ZXJbTUFYX05SX0lPUkVRX1NFUlZFUlNdOwog ICAgIH0gaW9yZXFfc2VydmVyOwotICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpkZWZhdWx0 X2lvcmVxX3NlcnZlcjsKIAogICAgIC8qIENhY2hlZCBDRjggZm9yIGd1ZXN0IFBDSSBjb25maWcg Y3ljbGVzICovCiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgcGNpX2NmODsKLS0gCjIuMTEu MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=