From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v3 09/12] x86/hvm/ioreq: simplify code and use consistent naming Date: Thu, 31 Aug 2017 10:36:02 +0100 Message-ID: <20170831093605.2757-10-paul.durrant@citrix.com> References: <20170831093605.2757-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 1dnLta-00067X-87 for xen-devel@lists.xenproject.org; Thu, 31 Aug 2017 09:36:18 +0000 In-Reply-To: <20170831093605.2757-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 VGhpcyBwYXRjaCByZS13b3JrcyBtdWNoIG9mIHRoZSBpb3JlcSBzZXJ2ZXIgaW5pdGlhbGl6YXRp b24gYW5kIHRlYXJkb3duCmNvZGU6CgotIFRoZSBodm1fbWFwL3VubWFwX2lvcmVxX2dmbigpIGZ1 bmN0aW9ucyBhcmUgZXhwYW5kZWQgdG8gY2FsbCB0aHJvdWdoCiAgdG8gaHZtX2FsbG9jL2ZyZWVf aW9yZXFfZ2ZuKCkgcmF0aGVyIHRoYW4gZXhwZWN0aW5nIHRoZW0gdG8gYmUgY2FsbGVkCiAgc2Vw YXJhdGVseSBieSBvdXRlciBmdW5jdGlvbnMuCi0gU2V2ZXJhbCBmdW5jdGlvbnMgbm93IHRlc3Qg dGhlIHZhbGlkaXR5IG9mIHRoZSBodm1faW9yZXFfcGFnZSBnZm4gdmFsdWUKICB0byBkZXRlcm1p bmUgd2hldGhlciB0aGV5IG5lZWQgdG8gYWN0LiBUaGlzIG1lYW5zIGNhbiBiZSBzYWZlbHkgY2Fs bGVkCiAgZm9yIHRoZSBidWZpb3JlcSBwYWdlIGV2ZW4gd2hlbiBpdCBpcyBub3QgdXNlZC4KLSBo dm1fYWRkL3JlbW92ZV9pb3JlcV9nZm4oKSBzaW1wbHkgcmV0dXJuIGluIHRoZSBjYXNlIG9mIHRo ZSBkZWZhdWx0CiAgSU9SRVEgc2VydmVyIHNvIGNhbGxlcnMgbm8gbG9uZ2VyIG5lZWQgdG8gdGVz dCBiZWZvcmUgY2FsbGluZy4KLSBodm1faW9yZXFfc2VydmVyX3NldHVwX3BhZ2VzKCkgaXMgcmVu YW1lZCB0byBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcygpCiAgdG8gbWlycm9yIHRoZSBleGlz dGluZyBodm1faW9yZXFfc2VydmVyX3VubWFwX3BhZ2VzKCkuCgpBbGwgb2YgdGhpcyBzaWduaWZp Y2FudGx5IHNob3J0ZW5zIHRoZSBjb2RlLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxw YXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKdjM6 CiAtIFJlYmFzZWQgb24gdG9wIG9mICdzLT5pc19kZWZhdWx0JyB0byAnSVNfREVGQVVMVChzKScg Y2hhbmdlcy4KIC0gTWlub3IgdXBkYXRlcyBpbiByZXNwb25zZSB0byByZXZpZXcgY29tbWVudHMg ZnJvbSBSb2dlci4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgfCAxODggKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3 MiBpbnNlcnRpb25zKCspLCAxMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9pb3JlcS5jIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCmluZGV4IDBlOTI3NjMz ODQuLmZhYzgyYWU5MzQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKQEAgLTE4OSw2MyArMTg5LDc4IEBAIGJvb2wgaGFu ZGxlX2h2bV9pb19jb21wbGV0aW9uKHN0cnVjdCB2Y3B1ICp2KQogICAgIHJldHVybiB0cnVlOwog fQogCi1zdGF0aWMgaW50IGh2bV9hbGxvY19pb3JlcV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyAqZ2ZuKQorI2RlZmluZSBJU19ERUZBVUxUKHMpIFwKKyAgICAocyA9PSBzLT5k b21haW4tPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2VydmVyW0RFRkFVTFRfSU9TRVJW SURdKQorCitzdGF0aWMgdW5zaWduZWQgbG9uZyBodm1fYWxsb2NfaW9yZXFfZ2ZuKHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzKQogeworICAgIHN0cnVjdCBkb21haW4gKmQgPSBzLT5kb21haW47 CiAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgaW50IHJjOwogCi0gICAgcmMgPSAtRU5PTUVNOwor ICAgIEFTU0VSVCghSVNfREVGQVVMVChzKSk7CisKICAgICBmb3IgKCBpID0gMDsgaSA8IHNpemVv ZihkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfZ2ZuLm1hc2spICogODsgaSsrICkKICAgICB7CiAg ICAgICAgIGlmICggdGVzdF9hbmRfY2xlYXJfYml0KGksICZkLT5hcmNoLmh2bV9kb21haW4uaW9y ZXFfZ2ZuLm1hc2spICkKLSAgICAgICAgewotICAgICAgICAgICAgKmdmbiA9IGQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9nZm4uYmFzZSArIGk7Ci0gICAgICAgICAgICByYyA9IDA7Ci0gICAgICAg ICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGQtPmFyY2guaHZtX2Rv bWFpbi5pb3JlcV9nZm4uYmFzZSArIGk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJjOworICAgIHJl dHVybiBnZm5feChJTlZBTElEX0dGTik7CiB9CiAKLXN0YXRpYyB2b2lkIGh2bV9mcmVlX2lvcmVx X2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKK3N0YXRpYyB2b2lkIGh2 bV9mcmVlX2lvcmVxX2dmbihzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbikKIHsKKyAgICBzdHJ1Y3QgZG9t YWluICpkID0gcy0+ZG9tYWluOwogICAgIHVuc2lnbmVkIGludCBpID0gZ2ZuIC0gZC0+YXJjaC5o dm1fZG9tYWluLmlvcmVxX2dmbi5iYXNlOwogCi0gICAgaWYgKCBnZm4gIT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKLSAgICAgICAgc2V0X2JpdChpLCAmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX2dm bi5tYXNrKTsKKyAgICBBU1NFUlQoIUlTX0RFRkFVTFQocykpOworICAgIEFTU0VSVChnZm4gIT0g Z2ZuX3goSU5WQUxJRF9HRk4pKTsKKworICAgIHNldF9iaXQoaSwgJmQtPmFyY2guaHZtX2RvbWFp bi5pb3JlcV9nZm4ubWFzayk7CiB9CiAKLXN0YXRpYyB2b2lkIGh2bV91bm1hcF9pb3JlcV9wYWdl KHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKK3N0YXRpYyB2b2lkIGh2bV91 bm1hcF9pb3JlcV9nZm4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsIGJvb2wgYnVmKQogewog ICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCA9IGJ1ZiA/ICZzLT5idWZpb3JlcSA6ICZz LT5pb3JlcTsKIAorICAgIGlmICggaW9ycC0+Z2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCisg ICAgICAgIHJldHVybjsKKwogICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZpb3JwLT52YSwg aW9ycC0+cGFnZSk7CisgICAgaW9ycC0+cGFnZSA9IE5VTEw7CisKKyAgICBpZiAoICFJU19ERUZB VUxUKHMpICkKKyAgICAgICAgaHZtX2ZyZWVfaW9yZXFfZ2ZuKHMsIGlvcnAtPmdmbik7CisKKyAg ICBpb3JwLT5nZm4gPSBnZm5feChJTlZBTElEX0dGTik7CiB9CiAKLXN0YXRpYyBpbnQgaHZtX21h cF9pb3JlcV9wYWdlKAotICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1Ziwg dW5zaWduZWQgbG9uZyBnZm4pCitzdGF0aWMgaW50IGh2bV9tYXBfaW9yZXFfZ2ZuKHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0g cy0+ZG9tYWluOwogICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCA9IGJ1ZiA/ICZzLT5i dWZpb3JlcSA6ICZzLT5pb3JlcTsKLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwotICAgIHZv aWQgKnZhOwogICAgIGludCByYzsKIAotICAgIGlmICggKHJjID0gcHJlcGFyZV9yaW5nX2Zvcl9o ZWxwZXIoZCwgZ2ZuLCAmcGFnZSwgJnZhKSkgKQotICAgICAgICByZXR1cm4gcmM7Ci0KLSAgICBp ZiAoIChpb3JwLT52YSAhPSBOVUxMKSB8fCBkLT5pc19keWluZyApCi0gICAgewotICAgICAgICBk ZXN0cm95X3JpbmdfZm9yX2hlbHBlcigmdmEsIHBhZ2UpOworICAgIGlmICggZC0+aXNfZHlpbmcg KQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKLSAgICB9CiAKLSAgICBpb3JwLT52YSA9IHZhOwot ICAgIGlvcnAtPnBhZ2UgPSBwYWdlOwotICAgIGlvcnAtPmdmbiA9IGdmbjsKKyAgICBpZiAoIElT X0RFRkFVTFQocykgKQorICAgICAgICBpb3JwLT5nZm4gPSBidWYgPworICAgICAgICAgICAgICAg ICAgICBkLT5hcmNoLmh2bV9kb21haW4ucGFyYW1zW0hWTV9QQVJBTV9CVUZJT1JFUV9QRk5dIDoK KyAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1f SU9SRVFfUEZOXTsKKyAgICBlbHNlCisgICAgICAgIGlvcnAtPmdmbiA9IGh2bV9hbGxvY19pb3Jl cV9nZm4ocyk7CisKKyAgICBpZiAoIGlvcnAtPmdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQor ICAgICAgICByZXR1cm4gLUVOT01FTTsKIAotICAgIHJldHVybiAwOworICAgIHJjID0gcHJlcGFy ZV9yaW5nX2Zvcl9oZWxwZXIoZCwgaW9ycC0+Z2ZuLCAmaW9ycC0+cGFnZSwgJmlvcnAtPnZhKTsK KworICAgIGlmICggcmMgKQorICAgICAgICBodm1fdW5tYXBfaW9yZXFfZ2ZuKHMsIGJ1Zik7CisK KyAgICByZXR1cm4gcmM7CiB9CiAKIGJvb2wgaXNfaW9yZXFfc2VydmVyX3BhZ2Uoc3RydWN0IGRv bWFpbiAqZCwgY29uc3Qgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSkKQEAgLTI2NCw4ICsyNzksNyBA QCBib29sIGlzX2lvcmVxX3NlcnZlcl9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVj dCBwYWdlX2luZm8gKnBhZ2UpCiAgICAgICAgIGlmICggIXMgKQogICAgICAgICAgICAgY29udGlu dWU7CiAKLSAgICAgICAgaWYgKCAocy0+aW9yZXEudmEgJiYgcy0+aW9yZXEucGFnZSA9PSBwYWdl KSB8fAotICAgICAgICAgICAgIChzLT5idWZpb3JlcS52YSAmJiBzLT5idWZpb3JlcS5wYWdlID09 IHBhZ2UpICkKKyAgICAgICAgaWYgKCAocy0+aW9yZXEucGFnZSA9PSBwYWdlKSB8fCAocy0+YnVm aW9yZXEucGFnZSA9PSBwYWdlKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1 ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc3LDIwICsyOTEsMzAgQEAgYm9vbCBpc19pb3Jl cV9zZXJ2ZXJfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgcGFnZV9pbmZvICpw YWdlKQogICAgIHJldHVybiBmb3VuZDsKIH0KIAotc3RhdGljIHZvaWQgaHZtX3JlbW92ZV9pb3Jl cV9nZm4oCi0gICAgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGh2bV9pb3JlcV9wYWdlICppb3Jw KQorc3RhdGljIHZvaWQgaHZtX3JlbW92ZV9pb3JlcV9nZm4oc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsIGJvb2wgYnVmKQorCiB7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFpbjsK KyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3BhZ2UgKmlvcnAgPSBidWYgPyAmcy0+YnVmaW9yZXEgOiAm cy0+aW9yZXE7CisKKyAgICBpZiAoIElTX0RFRkFVTFQocykgfHwgaW9ycC0+Z2ZuID09IGdmbl94 KElOVkFMSURfR0ZOKSApCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICggZ3Vlc3RfcGh5c21h cF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGlvcnAtPmdmbiksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9tZm4ocGFnZV90b19tZm4oaW9ycC0+cGFnZSkpLCAwKSApCiAgICAgICAg IGRvbWFpbl9jcmFzaChkKTsKICAgICBjbGVhcl9wYWdlKGlvcnAtPnZhKTsKIH0KIAotc3RhdGlj IGludCBodm1fYWRkX2lvcmVxX2dmbigKLSAgICBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgaHZt X2lvcmVxX3BhZ2UgKmlvcnApCitzdGF0aWMgaW50IGh2bV9hZGRfaW9yZXFfZ2ZuKHN0cnVjdCBo dm1faW9yZXFfc2VydmVyICpzLCBib29sIGJ1ZikKIHsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0g cy0+ZG9tYWluOworICAgIHN0cnVjdCBodm1faW9yZXFfcGFnZSAqaW9ycCA9IGJ1ZiA/ICZzLT5i dWZpb3JlcSA6ICZzLT5pb3JlcTsKICAgICBpbnQgcmM7CiAKKyAgICBpZiAoIElTX0RFRkFVTFQo cykgfHwgaW9ycC0+Z2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCisgICAgICAgIHJldHVybiAw OworCiAgICAgY2xlYXJfcGFnZShpb3JwLT52YSk7CiAKICAgICByYyA9IGd1ZXN0X3BoeXNtYXBf YWRkX3BhZ2UoZCwgX2dmbihpb3JwLT5nZm4pLApAQCAtMzE0LDkgKzMzOCw2IEBAIHN0YXRpYyB2 b2lkIGh2bV91cGRhdGVfaW9yZXFfZXZ0Y2huKHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzLAog ICAgIH0KIH0KIAotI2RlZmluZSBJU19ERUZBVUxUKHMpIFwKLSAgICAocyA9PSBzLT5kb21haW4t PmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIuc2VydmVyW0RFRkFVTFRfSU9TRVJWSURdKQot CiBzdGF0aWMgaW50IGh2bV9pb3JlcV9zZXJ2ZXJfYWRkX3ZjcHUoc3RydWN0IGh2bV9pb3JlcV9z ZXJ2ZXIgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZj cHUgKnYpCiB7CkBAIC00MjgsNzggKzQ0OSwyNSBAQCBzdGF0aWMgdm9pZCBodm1faW9yZXFfc2Vy dmVyX3JlbW92ZV9hbGxfdmNwdXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB9CiAKIHN0 YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9tYXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgaW9yZXFfZ2ZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGJ1ZmlvcmVxX2dmbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCBoYW5kbGVfYnVmaW9yZXEpCiB7CiAgICAgaW50IHJjOwogCi0gICAgcmMgPSBo dm1fbWFwX2lvcmVxX3BhZ2UocywgZmFsc2UsIGlvcmVxX2dmbik7Ci0gICAgaWYgKCByYyApCi0g ICAgICAgIHJldHVybiByYzsKLQotICAgIGlmICggYnVmaW9yZXFfZ2ZuICE9IGdmbl94KElOVkFM SURfR0ZOKSApCi0gICAgICAgIHJjID0gaHZtX21hcF9pb3JlcV9wYWdlKHMsIHRydWUsIGJ1Zmlv cmVxX2dmbik7Ci0KLSAgICBpZiAoIHJjICkKLSAgICAgICAgaHZtX3VubWFwX2lvcmVxX3BhZ2Uo cywgZmFsc2UpOwotCi0gICAgcmV0dXJuIHJjOwotfQotCi1zdGF0aWMgaW50IGh2bV9pb3JlcV9z ZXJ2ZXJfc2V0dXBfcGFnZXMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVfYnVmaW9yZXEpCi17Ci0g ICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFpbjsKLSAgICB1bnNpZ25lZCBsb25nIGlvcmVx X2dmbiA9IGdmbl94KElOVkFMSURfR0ZOKTsKLSAgICB1bnNpZ25lZCBsb25nIGJ1ZmlvcmVxX2dm biA9IGdmbl94KElOVkFMSURfR0ZOKTsKLSAgICBpbnQgcmM7Ci0KLSAgICBpZiAoIElTX0RFRkFV TFQocykgKQotICAgIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogVGhlIGRlZmF1bHQgaW9yZXEg c2VydmVyIG11c3QgaGFuZGxlIGJ1ZmZlcmVkIGlvcmVxcywgZm9yCi0gICAgICAgICAqIGJhY2t3 YXJkcyBjb21wYXRpYmlsaXR5LgotICAgICAgICAgKi8KLSAgICAgICAgQVNTRVJUKGhhbmRsZV9i dWZpb3JlcSk7Ci0gICAgICAgIHJldHVybiBodm1faW9yZXFfc2VydmVyX21hcF9wYWdlcyhzLAot ICAgICAgICAgICAgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5wYXJhbXNbSFZNX1BBUkFNX0lP UkVRX1BGTl0sCi0gICAgICAgICAgICAgICAgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tI Vk1fUEFSQU1fQlVGSU9SRVFfUEZOXSk7Ci0gICAgfQotCi0gICAgcmMgPSBodm1fYWxsb2NfaW9y ZXFfZ2ZuKGQsICZpb3JlcV9nZm4pOworICAgIHJjID0gaHZtX21hcF9pb3JlcV9nZm4ocywgZmFs c2UpOwogCiAgICAgaWYgKCAhcmMgJiYgaGFuZGxlX2J1ZmlvcmVxICkKLSAgICAgICAgcmMgPSBo dm1fYWxsb2NfaW9yZXFfZ2ZuKGQsICZidWZpb3JlcV9nZm4pOwotCi0gICAgaWYgKCAhcmMgKQot ICAgICAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfbWFwX3BhZ2VzKHMsIGlvcmVxX2dmbiwgYnVm aW9yZXFfZ2ZuKTsKKyAgICAgICAgcmMgPSBodm1fbWFwX2lvcmVxX2dmbihzLCB0cnVlKTsKIAog ICAgIGlmICggcmMgKQotICAgIHsKLSAgICAgICAgaHZtX2ZyZWVfaW9yZXFfZ2ZuKGQsIGlvcmVx X2dmbik7Ci0gICAgICAgIGh2bV9mcmVlX2lvcmVxX2dmbihkLCBidWZpb3JlcV9nZm4pOwotICAg IH0KKyAgICAgICAgaHZtX3VubWFwX2lvcmVxX2dmbihzLCBmYWxzZSk7CiAKICAgICByZXR1cm4g cmM7CiB9CiAKIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfdW5tYXBfcGFnZXMoc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCiB7Ci0gICAgc3RydWN0IGRvbWFpbiAqZCA9IHMtPmRvbWFp bjsKLSAgICBib29sIGhhbmRsZV9idWZpb3JlcSA9ICEhcy0+YnVmaW9yZXEudmE7Ci0KLSAgICBp ZiAoIGhhbmRsZV9idWZpb3JlcSApCi0gICAgICAgIGh2bV91bm1hcF9pb3JlcV9wYWdlKHMsIHRy dWUpOwotCi0gICAgaHZtX3VubWFwX2lvcmVxX3BhZ2UocywgZmFsc2UpOwotCi0gICAgaWYgKCAh SVNfREVGQVVMVChzKSApCi0gICAgewotICAgICAgICBpZiAoIGhhbmRsZV9idWZpb3JlcSApCi0g ICAgICAgICAgICBodm1fZnJlZV9pb3JlcV9nZm4oZCwgcy0+YnVmaW9yZXEuZ2ZuKTsKLQotICAg ICAgICBodm1fZnJlZV9pb3JlcV9nZm4oZCwgcy0+aW9yZXEuZ2ZuKTsKLSAgICB9CisgICAgaHZt X3VubWFwX2lvcmVxX2dmbihzLCB0cnVlKTsKKyAgICBodm1fdW5tYXBfaW9yZXFfZ2ZuKHMsIGZh bHNlKTsKIH0KIAogc3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9mcmVlX3Jhbmdlc2V0cyhz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKQEAgLTU1NywyMiArNTI1LDE1IEBAIHN0YXRpYyBp bnQgaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19yYW5nZXNldHMoc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMsCiAKIHN0YXRpYyB2b2lkIGh2bV9pb3JlcV9zZXJ2ZXJfZW5hYmxlKHN0cnVjdCBodm1f aW9yZXFfc2VydmVyICpzKQogewotICAgIHN0cnVjdCBkb21haW4gKmQgPSBzLT5kb21haW47CiAg ICAgc3RydWN0IGh2bV9pb3JlcV92Y3B1ICpzdjsKLSAgICBib29sIGhhbmRsZV9idWZpb3JlcSA9 ICEhcy0+YnVmaW9yZXEudmE7CiAKICAgICBzcGluX2xvY2soJnMtPmxvY2spOwogCiAgICAgaWYg KCBzLT5lbmFibGVkICkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgaWYgKCAhSVNfREVGQVVM VChzKSApCi0gICAgewotICAgICAgICBodm1fcmVtb3ZlX2lvcmVxX2dmbihkLCAmcy0+aW9yZXEp OwotCi0gICAgICAgIGlmICggaGFuZGxlX2J1ZmlvcmVxICkKLSAgICAgICAgICAgIGh2bV9yZW1v dmVfaW9yZXFfZ2ZuKGQsICZzLT5idWZpb3JlcSk7Ci0gICAgfQorICAgIGh2bV9yZW1vdmVfaW9y ZXFfZ2ZuKHMsIGZhbHNlKTsKKyAgICBodm1fcmVtb3ZlX2lvcmVxX2dmbihzLCB0cnVlKTsKIAog ICAgIHMtPmVuYWJsZWQgPSB0cnVlOwogCkBAIC01ODcsMjEgKzU0OCwxMyBAQCBzdGF0aWMgdm9p ZCBodm1faW9yZXFfc2VydmVyX2VuYWJsZShzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcykKIAog c3RhdGljIHZvaWQgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzKQogewotICAgIHN0cnVjdCBkb21haW4gKmQgPSBzLT5kb21haW47Ci0gICAgYm9vbCBo YW5kbGVfYnVmaW9yZXEgPSAhIXMtPmJ1ZmlvcmVxLnZhOwotCiAgICAgc3Bpbl9sb2NrKCZzLT5s b2NrKTsKIAogICAgIGlmICggIXMtPmVuYWJsZWQgKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAg ICBpZiAoICFJU19ERUZBVUxUKHMpICkKLSAgICB7Ci0gICAgICAgIGlmICggaGFuZGxlX2J1Zmlv cmVxICkKLSAgICAgICAgICAgIGh2bV9hZGRfaW9yZXFfZ2ZuKGQsICZzLT5idWZpb3JlcSk7Ci0K LSAgICAgICAgaHZtX2FkZF9pb3JlcV9nZm4oZCwgJnMtPmlvcmVxKTsKLSAgICB9CisgICAgaHZt X2FkZF9pb3JlcV9nZm4ocywgdHJ1ZSk7CisgICAgaHZtX2FkZF9pb3JlcV9nZm4ocywgZmFsc2Up OwogCiAgICAgcy0+ZW5hYmxlZCA9IGZhbHNlOwogCkBAIC02MjMsNiArNTc2LDkgQEAgc3RhdGlj IGludCBodm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAg ICAgSU5JVF9MSVNUX0hFQUQoJnMtPmlvcmVxX3ZjcHVfbGlzdCk7CiAgICAgc3Bpbl9sb2NrX2lu aXQoJnMtPmJ1ZmlvcmVxX2xvY2spOwogCisgICAgcy0+aW9yZXEuZ2ZuID0gZ2ZuX3goSU5WQUxJ RF9HRk4pOworICAgIHMtPmJ1ZmlvcmVxLmdmbiA9IGdmbl94KElOVkFMSURfR0ZOKTsKKwogICAg IHJjID0gaHZtX2lvcmVxX3NlcnZlcl9hbGxvY19yYW5nZXNldHMocywgaWQpOwogICAgIGlmICgg cmMgKQogICAgICAgICByZXR1cm4gcmM7CkBAIC02MzAsNyArNTg2LDcgQEAgc3RhdGljIGludCBo dm1faW9yZXFfc2VydmVyX2luaXQoc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMsCiAgICAgaWYg KCBidWZpb3JlcV9oYW5kbGluZyA9PSBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfQVRPTUlDICkKICAg ICAgICAgcy0+YnVmaW9yZXFfYXRvbWljID0gdHJ1ZTsKIAotICAgIHJjID0gaHZtX2lvcmVxX3Nl cnZlcl9zZXR1cF9wYWdlcygKKyAgICByYyA9IGh2bV9pb3JlcV9zZXJ2ZXJfbWFwX3BhZ2VzKAog ICAgICAgICAgICAgIHMsIGJ1ZmlvcmVxX2hhbmRsaW5nICE9IEhWTV9JT1JFUVNSVl9CVUZJT1JF UV9PRkYpOwogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIGZhaWxfbWFwOwotLSAKMi4xMS4w CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==