From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: [PATCH v7 2/2] qdisk - hw/block/xen_disk: grant copy implementation Date: Wed, 14 Sep 2016 21:10:03 +0200 Message-ID: <1473880203-4360-3-git-send-email-paulinaszubarczyk@gmail.com> References: <1473880203-4360-1-git-send-email-paulinaszubarczyk@gmail.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 1bkFaM-0007yK-NN for xen-devel@lists.xenproject.org; Wed, 14 Sep 2016 19:11:06 +0000 Received: by mail-lf0-f67.google.com with SMTP id k12so1048765lfb.1 for ; Wed, 14 Sep 2016 12:10:41 -0700 (PDT) In-Reply-To: <1473880203-4360-1-git-send-email-paulinaszubarczyk@gmail.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: sstabellini@kernel.org, wei.liu2@citrix.com, Paulina Szubarczyk , ian.jackson@eu.citrix.com, qemu-devel@nongnu.org, david.vrabel@citrix.com, anthony.perard@citrix.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org Q29weSBkYXRhIG9wZXJhdGVkIG9uIGR1cmluZyByZXF1ZXN0IGZyb20vdG8gbG9jYWwgYnVmZmVy cyB0by9mcm9tCnRoZSBncmFudCByZWZlcmVuY2VzLgoKQmVmb3JlIGdyYW50IGNvcHkgb3BlcmF0 aW9uIGxvY2FsIGJ1ZmZlcnMgbXVzdCBiZSBhbGxvY2F0ZWQgd2hhdCBpcwpkb25lIGJ5IGNhbGxp bmcgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMuIEZvciB0aGUgJ3JlYWQnIG9wZXJhdGlvbiwKZmly c3QsIHRoZSBxZW11IGRldmljZSBpbnZva2VzIHRoZSByZWFkIG9wZXJhdGlvbiBvbiBsb2NhbCBi dWZmZXJzCmFuZCBvbiB0aGUgY29tcGxldGlvbiBncmFudCBjb3B5IGlzIGNhbGxlZCBhbmQgYnVm ZmVycyBhcmUgZnJlZWQuCkZvciB0aGUgJ3dyaXRlJyBvcGVyYXRpb24gZ3JhbnQgY29weSBpcyBw ZXJmb3JtZWQgYmVmb3JlIGludm9raW5nCndyaXRlIGJ5IHFlbXUgZGV2aWNlLgoKQSBuZXcgdmFs dWUgJ2ZlYXR1cmVfZ3JhbnRfY29weScgaXMgYWRkZWQgdG8gcmVjb2duaXplIHdoZW4gdGhlCmdy YW50IGNvcHkgb3BlcmF0aW9uIGlzIHN1cHBvcnRlZCBieSBhIGd1ZXN0LgoKU2lnbmVkLW9mZi1i eTogUGF1bGluYSBTenViYXJjenlrIDxwYXVsaW5hc3p1YmFyY3p5a0BnbWFpbC5jb20+CkFja2Vk LWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KQWNrZWQtYnk6 IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ2hhbmdlcyBzaW5j ZSB2NjoKLXJlbW92ZWQgYmxhbmsgbGluZXMKLXJlbmFtZWQgZnVuY3Rpb25zIGZyZWVfYnVmZmVy cyAtPiBpb3JlcV9mcmVlX2NvcHlfYnVmZmVycywKIGlvcmVxX2NvcHkgLT4gaW9yZXFfZ3JhbnRf Y29weQotbWVyZ2VkIHRoZSBpZihpb3JlcV9jb3B5KSB3aXRoIHRoZSBjb25kaXRpb25zIGFib3Zl Ci0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAgIHwgIDU1ICsrKysrKysrKysrKysrKysK IGh3L2Jsb2NrL3hlbl9kaXNrLmMgICAgICAgICB8IDE1MyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQogaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oIHwgIDE0 ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjE3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGY0YzU4OWYuLjc0YjNk OTMgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE5NzIsNiArMTk3 Miw2MSBAQCBFT0YKIC8qCiAgKiBJZiB3ZSBoYXZlIHN0YWJsZSBsaWJzIHRoZSB3ZSBkb24ndCB3 YW50IHRoZSBsaWJ4YyBjb21wYXQKICAqIGxheWVycywgcmVnYXJkbGVzcyBvZiB3aGF0IENGTEFH UyB3ZSBtYXkgaGF2ZSBiZWVuIGdpdmVuLgorICoKKyAqIEFsc28sIGNoZWNrIGlmIHhlbmdudHRh Yl9ncmFudF9jb3B5X3NlZ21lbnRfdCBpcyBkZWZpbmVkIGFuZAorICogZ3JhbnQgY29weSBvcGVy YXRpb24gaXMgaW1wbGVtZW50ZWQuCisgKi8KKyN1bmRlZiBYQ19XQU5UX0NPTVBBVF9FVlRDSE5f QVBJCisjdW5kZWYgWENfV0FOVF9DT01QQVRfR05UVEFCX0FQSQorI3VuZGVmIFhDX1dBTlRfQ09N UEFUX01BUF9GT1JFSUdOX0FQSQorI2luY2x1ZGUgPHhlbmN0cmwuaD4KKyNpbmNsdWRlIDx4ZW5z dG9yZS5oPgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgorI2luY2x1ZGUgPHhlbmdudHRhYi5oPgor I2luY2x1ZGUgPHhlbmZvcmVpZ25tZW1vcnkuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNs dWRlIDx4ZW4vaHZtL2h2bV9pbmZvX3RhYmxlLmg+CisjaWYgIWRlZmluZWQoSFZNX01BWF9WQ1BV UykKKyMgZXJyb3IgSFZNX01BWF9WQ1BVUyBub3QgZGVmaW5lZAorI2VuZGlmCitpbnQgbWFpbih2 b2lkKSB7CisgIHhjX2ludGVyZmFjZSAqeGMgPSBOVUxMOworICB4ZW5mb3JlaWdubWVtb3J5X2hh bmRsZSAqeGZtZW07CisgIHhlbmV2dGNobl9oYW5kbGUgKnhlOworICB4ZW5nbnR0YWJfaGFuZGxl ICp4ZzsKKyAgeGVuX2RvbWFpbl9oYW5kbGVfdCBoYW5kbGU7CisgIHhlbmdudHRhYl9ncmFudF9j b3B5X3NlZ21lbnRfdCogc2VnID0gTlVMTDsKKworICB4c19kYWVtb25fb3BlbigpOworCisgIHhj ID0geGNfaW50ZXJmYWNlX29wZW4oMCwgMCwgMCk7CisgIHhjX2h2bV9zZXRfbWVtX3R5cGUoMCwg MCwgSFZNTUVNX3JhbV9ybywgMCwgMCk7CisgIHhjX2RvbWFpbl9hZGRfdG9fcGh5c21hcCgwLCAw LCBYRU5NQVBTUEFDRV9nbWZuLCAwLCAwKTsKKyAgeGNfaHZtX2luamVjdF9tc2koeGMsIDAsIDB4 ZjAwMDAwMDAsIDB4MDAwMDAwMDApOworICB4Y19odm1fY3JlYXRlX2lvcmVxX3NlcnZlcih4Yywg MCwgSFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQywgTlVMTCk7CisgIHhjX2RvbWFpbl9jcmVh dGUoeGMsIDAsIGhhbmRsZSwgMCwgTlVMTCwgTlVMTCk7CisKKyAgeGZtZW0gPSB4ZW5mb3JlaWdu bWVtb3J5X29wZW4oMCwgMCk7CisgIHhlbmZvcmVpZ25tZW1vcnlfbWFwKHhmbWVtLCAwLCAwLCAw LCAwLCAwKTsKKworICB4ZSA9IHhlbmV2dGNobl9vcGVuKDAsIDApOworICB4ZW5ldnRjaG5fZmQo eGUpOworCisgIHhnID0geGVuZ250dGFiX29wZW4oMCwgMCk7CisgIHhlbmdudHRhYl9ncmFudF9j b3B5KHhnLCAwLCBzZWcpOworCisgIHJldHVybiAwOworfQorRU9GCisgICAgICBjb21waWxlX3By b2cgIiIgIiR4ZW5fbGlicyAkeGVuX3N0YWJsZV9saWJzIgorICAgIHRoZW4KKyAgICB4ZW5fY3Ry bF92ZXJzaW9uPTQ4MAorICAgIHhlbj15ZXMKKyAgZWxpZgorICAgICAgY2F0ID4gJFRNUEMgPDxF T0YgJiYKKy8qCisgKiBJZiB3ZSBoYXZlIHN0YWJsZSBsaWJzIHRoZSB3ZSBkb24ndCB3YW50IHRo ZSBsaWJ4YyBjb21wYXQKKyAqIGxheWVycywgcmVnYXJkbGVzcyBvZiB3aGF0IENGTEFHUyB3ZSBt YXkgaGF2ZSBiZWVuIGdpdmVuLgogICovCiAjdW5kZWYgWENfV0FOVF9DT01QQVRfRVZUQ0hOX0FQ SQogI3VuZGVmIFhDX1dBTlRfQ09NUEFUX0dOVFRBQl9BUEkKZGlmZiAtLWdpdCBhL2h3L2Jsb2Nr L3hlbl9kaXNrLmMgYi9ody9ibG9jay94ZW5fZGlzay5jCmluZGV4IDM0Mjg2ODkuLjVhYTM1MGEg MTAwNjQ0Ci0tLSBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMKKysrIGIvaHcvYmxvY2sveGVuX2Rpc2su YwpAQCAtMTE5LDYgKzExOSw5IEBAIHN0cnVjdCBYZW5CbGtEZXYgewogICAgIHVuc2lnbmVkIGlu dCAgICAgICAgcGVyc2lzdGVudF9nbnRfY291bnQ7CiAgICAgdW5zaWduZWQgaW50ICAgICAgICBt YXhfZ3JhbnRzOwogCisgICAgLyogR3JhbnQgY29weSAqLworICAgIGdib29sZWFuICAgICAgICAg ICAgZmVhdHVyZV9ncmFudF9jb3B5OworCiAgICAgLyogcWVtdSBibG9jayBkcml2ZXIgKi8KICAg ICBEcml2ZUluZm8gICAgICAgICAgICpkaW5mbzsKICAgICBCbG9ja0JhY2tlbmQgICAgICAgICpi bGs7CkBAIC00ODksNiArNDkyLDEwNiBAQCBzdGF0aWMgaW50IGlvcmVxX21hcChzdHJ1Y3QgaW9y ZXEgKmlvcmVxKQogICAgIHJldHVybiAwOwogfQogCisjaWYgQ09ORklHX1hFTl9DVFJMX0lOVEVS RkFDRV9WRVJTSU9OID49IDQ4MAorCitzdGF0aWMgdm9pZCBpb3JlcV9mcmVlX2NvcHlfYnVmZmVy cyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsg aSA8IGlvcmVxLT52Lm5pb3Y7IGkrKykgeworICAgICAgICBpb3JlcS0+cGFnZVtpXSA9IE5VTEw7 CisgICAgfQorCisgICAgcWVtdV92ZnJlZShpb3JlcS0+cGFnZXMpOworfQorCitzdGF0aWMgaW50 IGlvcmVxX2luaXRfY29weV9idWZmZXJzKHN0cnVjdCBpb3JlcSAqaW9yZXEpCit7CisgICAgaW50 IGk7CisKKyAgICBpZiAoaW9yZXEtPnYubmlvdiA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOwor ICAgIH0KKworICAgIGlvcmVxLT5wYWdlcyA9IHFlbXVfbWVtYWxpZ24oWENfUEFHRV9TSVpFLCBp b3JlcS0+di5uaW92ICogWENfUEFHRV9TSVpFKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBpb3Jl cS0+di5uaW92OyBpKyspIHsKKyAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBpb3JlcS0+cGFnZXMg KyBpICogWENfUEFHRV9TSVpFOworICAgICAgICBpb3JlcS0+di5pb3ZbaV0uaW92X2Jhc2UgPSBp b3JlcS0+cGFnZVtpXTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBp b3JlcV9ncmFudF9jb3B5KHN0cnVjdCBpb3JlcSAqaW9yZXEpCit7CisgICAgeGVuZ250dGFiX2hh bmRsZSAqZ250ID0gaW9yZXEtPmJsa2Rldi0+eGVuZGV2LmdudHRhYmRldjsKKyAgICB4ZW5nbnR0 YWJfZ3JhbnRfY29weV9zZWdtZW50X3Qgc2Vnc1tCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVF U1RdOworICAgIGludCBpLCBjb3VudCwgcmM7CisgICAgaW50NjRfdCBmaWxlX2JsayA9IGlvcmVx LT5ibGtkZXYtPmZpbGVfYmxrOworCisgICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0gMCkgeworICAg ICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBjb3VudCA9IGlvcmVxLT52Lm5pb3Y7CisKKyAg ICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBpZiAoaW9yZXEtPnJlcS5v cGVyYXRpb24gPT0gQkxLSUZfT1BfUkVBRCkgeworICAgICAgICAgICAgc2Vnc1tpXS5mbGFncyA9 IEdOVENPUFlfZGVzdF9ncmVmOworICAgICAgICAgICAgc2Vnc1tpXS5kZXN0LmZvcmVpZ24ucmVm ID0gaW9yZXEtPnJlZnNbaV07CisgICAgICAgICAgICBzZWdzW2ldLmRlc3QuZm9yZWlnbi5kb21p ZCA9IGlvcmVxLT5kb21pZHNbaV07CisgICAgICAgICAgICBzZWdzW2ldLmRlc3QuZm9yZWlnbi5v ZmZzZXQgPSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICogZmlsZV9ibGs7CisgICAgICAg ICAgICBzZWdzW2ldLnNvdXJjZS52aXJ0ID0gaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlOworICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2Vnc1tpXS5mbGFncyA9IEdOVENPUFlfc291cmNl X2dyZWY7CisgICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLnJlZiA9IGlvcmVxLT5y ZWZzW2ldOworICAgICAgICAgICAgc2Vnc1tpXS5zb3VyY2UuZm9yZWlnbi5kb21pZCA9IGlvcmVx LT5kb21pZHNbaV07CisgICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLm9mZnNldCA9 IGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKiBmaWxlX2JsazsKKyAgICAgICAgICAgIHNl Z3NbaV0uZGVzdC52aXJ0ID0gaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlOworICAgICAgICB9Cisg ICAgICAgIHNlZ3NbaV0ubGVuID0gKGlvcmVxLT5yZXEuc2VnW2ldLmxhc3Rfc2VjdAorICAgICAg ICAgICAgICAgICAgICAgICAtIGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKyAxKSAqIGZp bGVfYmxrOworICAgIH0KKworICAgIHJjID0geGVuZ250dGFiX2dyYW50X2NvcHkoZ250LCBjb3Vu dCwgc2Vncyk7CisKKyAgICBpZiAocmMpIHsKKyAgICAgICAgeGVuX2JlX3ByaW50ZigmaW9yZXEt PmJsa2Rldi0+eGVuZGV2LCAwLAorICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gY29w eSBkYXRhICVkXG4iLCByYyk7CisgICAgICAgIGlvcmVxLT5haW9fZXJyb3JzKys7CisgICAgICAg IHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewor ICAgICAgICBpZiAoc2Vnc1tpXS5zdGF0dXMgIT0gR05UU1Rfb2theSkgeworICAgICAgICAgICAg eGVuX2JlX3ByaW50ZigmaW9yZXEtPmJsa2Rldi0+eGVuZGV2LCAzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAiZmFpbGVkIHRvIGNvcHkgZGF0YSAlZCBmb3IgZ3JlZiAlZCwgZG9taWQgJWRc biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ3NbaV0uc3RhdHVzLCBpb3JlcS0+cmVm c1tpXSwgaW9yZXEtPmRvbWlkc1tpXSk7CisgICAgICAgICAgICBpb3JlcS0+YWlvX2Vycm9ycysr OworICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBy YzsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCBpb3JlcV9mcmVlX2NvcHlfYnVmZmVycyhzdHJ1Y3Qg aW9yZXEgKmlvcmVxKQoreworICAgIGFib3J0KCk7Cit9CisKK3N0YXRpYyBpbnQgaW9yZXFfaW5p dF9jb3B5X2J1ZmZlcnMoc3RydWN0IGlvcmVxICppb3JlcSkKK3sKKyAgICBhYm9ydCgpOworfQor CitzdGF0aWMgaW50IGlvcmVxX2dyYW50X2NvcHkoc3RydWN0IGlvcmVxICppb3JlcSkKK3sKKyAg ICBhYm9ydCgpOworfQorI2VuZGlmCisKIHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8o c3RydWN0IGlvcmVxICppb3JlcSk7CiAKIHN0YXRpYyB2b2lkIHFlbXVfYWlvX2NvbXBsZXRlKHZv aWQgKm9wYXF1ZSwgaW50IHJldCkKQEAgLTUxMSw4ICs2MTQsMzEgQEAgc3RhdGljIHZvaWQgcWVt dV9haW9fY29tcGxldGUodm9pZCAqb3BhcXVlLCBpbnQgcmV0KQogICAgICAgICByZXR1cm47CiAg ICAgfQogCisgICAgaWYgKGlvcmVxLT5ibGtkZXYtPmZlYXR1cmVfZ3JhbnRfY29weSkgeworICAg ICAgICBzd2l0Y2ggKGlvcmVxLT5yZXEub3BlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgQkxLSUZf T1BfUkVBRDoKKyAgICAgICAgICAgIC8qIGluIGNhc2Ugb2YgZmFpbHVyZSBpb3JlcS0+YWlvX2Vy cm9ycyBpcyBpbmNyZWFzZWQgKi8KKyAgICAgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAgICAg ICAgICAgICAgIGlvcmVxX2dyYW50X2NvcHkoaW9yZXEpOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgaW9yZXFfZnJlZV9jb3B5X2J1ZmZlcnMoaW9yZXEpOworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIGNhc2UgQkxLSUZfT1BfV1JJVEU6CisgICAgICAgIGNhc2UgQkxLSUZfT1BfRkxV U0hfRElTS0NBQ0hFOgorICAgICAgICAgICAgaWYgKCFpb3JlcS0+cmVxLm5yX3NlZ21lbnRzKSB7 CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpb3Jl cV9mcmVlX2NvcHlfYnVmZmVycyhpb3JlcSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCiAgICAgaW9y ZXEtPnN0YXR1cyA9IGlvcmVxLT5haW9fZXJyb3JzID8gQkxLSUZfUlNQX0VSUk9SIDogQkxLSUZf UlNQX09LQVk7Ci0gICAgaW9yZXFfdW5tYXAoaW9yZXEpOworICAgIGlmICghaW9yZXEtPmJsa2Rl di0+ZmVhdHVyZV9ncmFudF9jb3B5KSB7CisgICAgICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKKyAg ICB9CiAgICAgaW9yZXFfZmluaXNoKGlvcmVxKTsKICAgICBzd2l0Y2ggKGlvcmVxLT5yZXEub3Bl cmF0aW9uKSB7CiAgICAgY2FzZSBCTEtJRl9PUF9XUklURToKQEAgLTUzOCw4ICs2NjQsMTggQEAg c3RhdGljIGludCBpb3JlcV9ydW5pb19xZW11X2FpbyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQogewog ICAgIHN0cnVjdCBYZW5CbGtEZXYgKmJsa2RldiA9IGlvcmVxLT5ibGtkZXY7CiAKLSAgICBpZiAo aW9yZXEtPnJlcS5ucl9zZWdtZW50cyAmJiBpb3JlcV9tYXAoaW9yZXEpID09IC0xKSB7Ci0gICAg ICAgIGdvdG8gZXJyX25vX21hcDsKKyAgICBpZiAoaW9yZXEtPmJsa2Rldi0+ZmVhdHVyZV9ncmFu dF9jb3B5KSB7CisgICAgICAgIGlvcmVxX2luaXRfY29weV9idWZmZXJzKGlvcmVxKTsKKyAgICAg ICAgaWYgKGlvcmVxLT5yZXEubnJfc2VnbWVudHMgJiYgKGlvcmVxLT5yZXEub3BlcmF0aW9uID09 IEJMS0lGX09QX1dSSVRFIHx8CisgICAgICAgICAgICBpb3JlcS0+cmVxLm9wZXJhdGlvbiA9PSBC TEtJRl9PUF9GTFVTSF9ESVNLQ0FDSEUpICYmCisgICAgICAgICAgICBpb3JlcV9ncmFudF9jb3B5 KGlvcmVxKSkgeworICAgICAgICAgICAgICAgIGlvcmVxX2ZyZWVfY29weV9idWZmZXJzKGlvcmVx KTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg ICAgICAgIGlmIChpb3JlcS0+cmVxLm5yX3NlZ21lbnRzICYmIGlvcmVxX21hcChpb3JlcSkpIHsK KyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CiAgICAgfQogCiAgICAgaW9yZXEtPmFp b19pbmZsaWdodCsrOwpAQCAtNTgyLDYgKzcxOCw5IEBAIHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9f cWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAg ICAgLyogdW5rbm93biBvcGVyYXRpb24gKHNob3VsZG4ndCBoYXBwZW4gLS0gcGFyc2UgY2F0Y2hl cyB0aGlzKSAqLworICAgICAgICBpZiAoIWlvcmVxLT5ibGtkZXYtPmZlYXR1cmVfZ3JhbnRfY29w eSkgeworICAgICAgICAgICAgaW9yZXFfdW5tYXAoaW9yZXEpOworICAgICAgICB9CiAgICAgICAg IGdvdG8gZXJyOwogICAgIH0KIApAQCAtNTkwLDggKzcyOSw2IEBAIHN0YXRpYyBpbnQgaW9yZXFf cnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKICAgICByZXR1cm4gMDsKIAogZXJy OgotICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKLWVycl9ub19tYXA6CiAgICAgaW9yZXFfZmluaXNo KGlvcmVxKTsKICAgICBpb3JlcS0+c3RhdHVzID0gQkxLSUZfUlNQX0VSUk9SOwogICAgIHJldHVy biAtMTsKQEAgLTEwMzQsNiArMTE3MSwxMiBAQCBzdGF0aWMgaW50IGJsa19jb25uZWN0KHN0cnVj dCBYZW5EZXZpY2UgKnhlbmRldikKIAogICAgIHhlbl9iZV9iaW5kX2V2dGNobigmYmxrZGV2LT54 ZW5kZXYpOwogCisgICAgYmxrZGV2LT5mZWF0dXJlX2dyYW50X2NvcHkgPQorICAgICAgICAgICAg ICAgICh4ZW5nbnR0YWJfZ3JhbnRfY29weShibGtkZXYtPnhlbmRldi5nbnR0YWJkZXYsIDAsIE5V TEwpID09IDApOworCisgICAgeGVuX2JlX3ByaW50ZigmYmxrZGV2LT54ZW5kZXYsIDMsICJncmFu dCBjb3B5IG9wZXJhdGlvbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIGJsa2Rldi0+ZmVhdHVy ZV9ncmFudF9jb3B5ID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisKICAgICB4ZW5fYmVfcHJp bnRmKCZibGtkZXYtPnhlbmRldiwgMSwgIm9rOiBwcm90byAlcywgcmluZy1yZWYgJWQsICIKICAg ICAgICAgICAgICAgICAgICJyZW1vdGUgcG9ydCAlZCwgbG9jYWwgcG9ydCAlZFxuIiwKICAgICAg ICAgICAgICAgICAgIGJsa2Rldi0+eGVuZGV2LnByb3RvY29sLCBibGtkZXYtPnJpbmdfcmVmLApk aWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oIGIvaW5jbHVkZS9ody94ZW4v eGVuX2NvbW1vbi5oCmluZGV4IGJkMzkyODcuLjhlMTU4MGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv aHcveGVuL3hlbl9jb21tb24uaAorKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKQEAg LTQyNCw0ICs0MjQsMTggQEAgc3RhdGljIGlubGluZSBpbnQgeGVuX2RvbWFpbl9jcmVhdGUoeGNf aW50ZXJmYWNlICp4YywgdWludDMyX3Qgc3NpZHJlZiwKICNlbmRpZgogI2VuZGlmCiAKKy8qIFhl biBiZWZvcmUgNC44ICovCisKKyNpZiBDT05GSUdfWEVOX0NUUkxfSU5URVJGQUNFX1ZFUlNJT04g PCA0ODAKKworCit0eXBlZGVmIHZvaWQgKnhlbmdudHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdDsK Kworc3RhdGljIGlubGluZSBpbnQgeGVuZ250dGFiX2dyYW50X2NvcHkoeGVuZ250dGFiX2hhbmRs ZSAqeGd0LCB1aW50MzJfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHhlbmdudHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdCAqc2VncykKK3sKKyAgICByZXR1 cm4gLUVOT1NZUzsKK30KKyNlbmRpZgorCiAjZW5kaWYgLyogUUVNVV9IV19YRU5fQ09NTU9OX0gg Ki8KLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==