From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulina Szubarczyk Subject: [PATCH v6 2/2] qdisk - hw/block/xen_disk: grant copy implementation Date: Wed, 7 Sep 2016 12:41:00 +0200 Message-ID: <1473244860-6072-3-git-send-email-paulinaszubarczyk@gmail.com> References: <1473244860-6072-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 1bhaIb-0005Jm-S6 for xen-devel@lists.xenproject.org; Wed, 07 Sep 2016 10:41:45 +0000 Received: by mail-lf0-f68.google.com with SMTP id 29so600054lfv.1 for ; Wed, 07 Sep 2016 03:41:44 -0700 (PDT) In-Reply-To: <1473244860-6072-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+Ci0tLQpD aGFuZ2VzIHNpbmNlIHY1OgotYWRkZWQgY2hlY2tpbmcgb2YgZXZlcnkgaW50ZXJmYWNlIGluIHRo ZSBjb25maWd1cmUgZmlsZS4gQmFzZWQgb24KIHRoZSBSb2dlcidzIGNvbW1lbnQgdGhhdCB4ZW5n bnR0YWJfbWFwX2dyYW50X3JlZiB3YXMgYWRkZWQgcHJpb3IKIHhlbmdudHRhYl9ncmFudF9jb3B5 LCB0aHVzIGRvIG5vdCBuZWVkIHRvIGJlIGNoZWNrIGFnYWluIGhlcmUKIEkgZHJvcHBlZCB0aGlz IGNoZWNrLgogCi0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAgIHwgIDU1ICsrKysrKysr KysrKysrKysKIGh3L2Jsb2NrL3hlbl9kaXNrLmMgICAgICAgICB8IDE1NyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogaW5jbHVkZS9ody94ZW4veGVuX2NvbW1v bi5oIHwgIDE0ICsrKysKIDMgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDUgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDRiODA4 ZjkuLjNmNDRkMzggMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE5 NTYsNiArMTk1Niw2MSBAQCBFT0YKIC8qCiAgKiBJZiB3ZSBoYXZlIHN0YWJsZSBsaWJzIHRoZSB3 ZSBkb24ndCB3YW50IHRoZSBsaWJ4YyBjb21wYXQKICAqIGxheWVycywgcmVnYXJkbGVzcyBvZiB3 aGF0IENGTEFHUyB3ZSBtYXkgaGF2ZSBiZWVuIGdpdmVuLgorICoKKyAqIEFsc28sIGNoZWNrIGlm IHhlbmdudHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdCBpcyBkZWZpbmVkIGFuZAorICogZ3JhbnQg Y29weSBvcGVyYXRpb24gaXMgaW1wbGVtZW50ZWQuCisgKi8KKyN1bmRlZiBYQ19XQU5UX0NPTVBB VF9FVlRDSE5fQVBJCisjdW5kZWYgWENfV0FOVF9DT01QQVRfR05UVEFCX0FQSQorI3VuZGVmIFhD X1dBTlRfQ09NUEFUX01BUF9GT1JFSUdOX0FQSQorI2luY2x1ZGUgPHhlbmN0cmwuaD4KKyNpbmNs dWRlIDx4ZW5zdG9yZS5oPgorI2luY2x1ZGUgPHhlbmV2dGNobi5oPgorI2luY2x1ZGUgPHhlbmdu dHRhYi5oPgorI2luY2x1ZGUgPHhlbmZvcmVpZ25tZW1vcnkuaD4KKyNpbmNsdWRlIDxzdGRpbnQu aD4KKyNpbmNsdWRlIDx4ZW4vaHZtL2h2bV9pbmZvX3RhYmxlLmg+CisjaWYgIWRlZmluZWQoSFZN X01BWF9WQ1BVUykKKyMgZXJyb3IgSFZNX01BWF9WQ1BVUyBub3QgZGVmaW5lZAorI2VuZGlmCitp bnQgbWFpbih2b2lkKSB7CisgIHhjX2ludGVyZmFjZSAqeGMgPSBOVUxMOworICB4ZW5mb3JlaWdu bWVtb3J5X2hhbmRsZSAqeGZtZW07CisgIHhlbmV2dGNobl9oYW5kbGUgKnhlOworICB4ZW5nbnR0 YWJfaGFuZGxlICp4ZzsKKyAgeGVuX2RvbWFpbl9oYW5kbGVfdCBoYW5kbGU7CisgIHhlbmdudHRh Yl9ncmFudF9jb3B5X3NlZ21lbnRfdCogc2VnID0gTlVMTDsKKworICB4c19kYWVtb25fb3Blbigp OworCisgIHhjID0geGNfaW50ZXJmYWNlX29wZW4oMCwgMCwgMCk7CisgIHhjX2h2bV9zZXRfbWVt X3R5cGUoMCwgMCwgSFZNTUVNX3JhbV9ybywgMCwgMCk7CisgIHhjX2RvbWFpbl9hZGRfdG9fcGh5 c21hcCgwLCAwLCBYRU5NQVBTUEFDRV9nbWZuLCAwLCAwKTsKKyAgeGNfaHZtX2luamVjdF9tc2ko eGMsIDAsIDB4ZjAwMDAwMDAsIDB4MDAwMDAwMDApOworICB4Y19odm1fY3JlYXRlX2lvcmVxX3Nl cnZlcih4YywgMCwgSFZNX0lPUkVRU1JWX0JVRklPUkVRX0FUT01JQywgTlVMTCk7CisgIHhjX2Rv bWFpbl9jcmVhdGUoeGMsIDAsIGhhbmRsZSwgMCwgTlVMTCwgTlVMTCk7CisKKyAgeGZtZW0gPSB4 ZW5mb3JlaWdubWVtb3J5X29wZW4oMCwgMCk7CisgIHhlbmZvcmVpZ25tZW1vcnlfbWFwKHhmbWVt LCAwLCAwLCAwLCAwLCAwKTsKKworICB4ZSA9IHhlbmV2dGNobl9vcGVuKDAsIDApOworICB4ZW5l dnRjaG5fZmQoeGUpOworCisgIHhnID0geGVuZ250dGFiX29wZW4oMCwgMCk7CisgIHhlbmdudHRh Yl9ncmFudF9jb3B5KHhnLCAwLCBzZWcpOworCisgIHJldHVybiAwOworfQorRU9GCisgICAgICBj b21waWxlX3Byb2cgIiIgIiR4ZW5fbGlicyAkeGVuX3N0YWJsZV9saWJzIgorICAgIHRoZW4KKyAg ICB4ZW5fY3RybF92ZXJzaW9uPTQ4MAorICAgIHhlbj15ZXMKKyAgZWxpZgorICAgICAgY2F0ID4g JFRNUEMgPDxFT0YgJiYKKy8qCisgKiBJZiB3ZSBoYXZlIHN0YWJsZSBsaWJzIHRoZSB3ZSBkb24n dCB3YW50IHRoZSBsaWJ4YyBjb21wYXQKKyAqIGxheWVycywgcmVnYXJkbGVzcyBvZiB3aGF0IENG TEFHUyB3ZSBtYXkgaGF2ZSBiZWVuIGdpdmVuLgogICovCiAjdW5kZWYgWENfV0FOVF9DT01QQVRf RVZUQ0hOX0FQSQogI3VuZGVmIFhDX1dBTlRfQ09NUEFUX0dOVFRBQl9BUEkKZGlmZiAtLWdpdCBh L2h3L2Jsb2NrL3hlbl9kaXNrLmMgYi9ody9ibG9jay94ZW5fZGlzay5jCmluZGV4IDNiOGFkMzMu LjM3MzllMTMgMTAwNjQ0Ci0tLSBhL2h3L2Jsb2NrL3hlbl9kaXNrLmMKKysrIGIvaHcvYmxvY2sv eGVuX2Rpc2suYwpAQCAtMTE5LDYgKzExOSw5IEBAIHN0cnVjdCBYZW5CbGtEZXYgewogICAgIHVu c2lnbmVkIGludCAgICAgICAgcGVyc2lzdGVudF9nbnRfY291bnQ7CiAgICAgdW5zaWduZWQgaW50 ICAgICAgICBtYXhfZ3JhbnRzOwogCisgICAgLyogR3JhbnQgY29weSAqLworICAgIGdib29sZWFu ICAgICAgICAgICAgZmVhdHVyZV9ncmFudF9jb3B5OworCiAgICAgLyogcWVtdSBibG9jayBkcml2 ZXIgKi8KICAgICBEcml2ZUluZm8gICAgICAgICAgICpkaW5mbzsKICAgICBCbG9ja0JhY2tlbmQg ICAgICAgICpibGs7CkBAIC00ODksNiArNDkyLDEwOCBAQCBzdGF0aWMgaW50IGlvcmVxX21hcChz dHJ1Y3QgaW9yZXEgKmlvcmVxKQogICAgIHJldHVybiAwOwogfQogCisjaWYgQ09ORklHX1hFTl9D VFJMX0lOVEVSRkFDRV9WRVJTSU9OID49IDQ4MAorCitzdGF0aWMgdm9pZCBmcmVlX2J1ZmZlcnMo c3RydWN0IGlvcmVxICppb3JlcSkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGkg PCBpb3JlcS0+di5uaW92OyBpKyspIHsKKyAgICAgICAgaW9yZXEtPnBhZ2VbaV0gPSBOVUxMOwor ICAgIH0KKworICAgIHFlbXVfdmZyZWUoaW9yZXEtPnBhZ2VzKTsKK30KKworc3RhdGljIGludCBp b3JlcV9pbml0X2NvcHlfYnVmZmVycyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQoreworICAgIGludCBp OworCisgICAgaWYgKGlvcmVxLT52Lm5pb3YgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAg ICB9CisKKyAgICBpb3JlcS0+cGFnZXMgPSBxZW11X21lbWFsaWduKFhDX1BBR0VfU0laRSwgaW9y ZXEtPnYubmlvdiAqIFhDX1BBR0VfU0laRSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgaW9yZXEt PnYubmlvdjsgaSsrKSB7CisgICAgICAgIGlvcmVxLT5wYWdlW2ldID0gaW9yZXEtPnBhZ2VzICsg aSAqIFhDX1BBR0VfU0laRTsKKyAgICAgICAgaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlID0gaW9y ZXEtPnBhZ2VbaV07CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW9y ZXFfY29weShzdHJ1Y3QgaW9yZXEgKmlvcmVxKQoreworICAgIHhlbmdudHRhYl9oYW5kbGUgKmdu dCA9IGlvcmVxLT5ibGtkZXYtPnhlbmRldi5nbnR0YWJkZXY7CisgICAgeGVuZ250dGFiX2dyYW50 X2NvcHlfc2VnbWVudF90IHNlZ3NbQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKKyAg ICBpbnQgaSwgY291bnQsIHJjOworICAgIGludDY0X3QgZmlsZV9ibGsgPSBpb3JlcS0+YmxrZGV2 LT5maWxlX2JsazsKKworICAgIGlmIChpb3JlcS0+di5uaW92ID09IDApIHsKKyAgICAgICAgcmV0 dXJuIDA7CisgICAgfQorCisgICAgY291bnQgPSBpb3JlcS0+di5uaW92OworCisgICAgZm9yIChp ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKworICAgICAgICBpZiAoaW9yZXEtPnJlcS5vcGVyYXRp b24gPT0gQkxLSUZfT1BfUkVBRCkgeworICAgICAgICAgICAgc2Vnc1tpXS5mbGFncyA9IEdOVENP UFlfZGVzdF9ncmVmOworICAgICAgICAgICAgc2Vnc1tpXS5kZXN0LmZvcmVpZ24ucmVmID0gaW9y ZXEtPnJlZnNbaV07CisgICAgICAgICAgICBzZWdzW2ldLmRlc3QuZm9yZWlnbi5kb21pZCA9IGlv cmVxLT5kb21pZHNbaV07CisgICAgICAgICAgICBzZWdzW2ldLmRlc3QuZm9yZWlnbi5vZmZzZXQg PSBpb3JlcS0+cmVxLnNlZ1tpXS5maXJzdF9zZWN0ICogZmlsZV9ibGs7CisgICAgICAgICAgICBz ZWdzW2ldLnNvdXJjZS52aXJ0ID0gaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlOworICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgc2Vnc1tpXS5mbGFncyA9IEdOVENPUFlfc291cmNlX2dyZWY7 CisgICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLnJlZiA9IGlvcmVxLT5yZWZzW2ld OworICAgICAgICAgICAgc2Vnc1tpXS5zb3VyY2UuZm9yZWlnbi5kb21pZCA9IGlvcmVxLT5kb21p ZHNbaV07CisgICAgICAgICAgICBzZWdzW2ldLnNvdXJjZS5mb3JlaWduLm9mZnNldCA9IGlvcmVx LT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKiBmaWxlX2JsazsKKyAgICAgICAgICAgIHNlZ3NbaV0u ZGVzdC52aXJ0ID0gaW9yZXEtPnYuaW92W2ldLmlvdl9iYXNlOworICAgICAgICB9CisgICAgICAg IHNlZ3NbaV0ubGVuID0gKGlvcmVxLT5yZXEuc2VnW2ldLmxhc3Rfc2VjdAorICAgICAgICAgICAg ICAgICAgICAgICAtIGlvcmVxLT5yZXEuc2VnW2ldLmZpcnN0X3NlY3QgKyAxKSAqIGZpbGVfYmxr OworCisgICAgfQorCisgICAgcmMgPSB4ZW5nbnR0YWJfZ3JhbnRfY29weShnbnQsIGNvdW50LCBz ZWdzKTsKKworICAgIGlmIChyYykgeworICAgICAgICB4ZW5fYmVfcHJpbnRmKCZpb3JlcS0+Ymxr ZGV2LT54ZW5kZXYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBjb3B5IGRh dGEgJWRcbiIsIHJjKTsKKyAgICAgICAgaW9yZXEtPmFpb19lcnJvcnMrKzsKKyAgICAgICAgcmV0 dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAg ICAgIGlmIChzZWdzW2ldLnN0YXR1cyAhPSBHTlRTVF9va2F5KSB7CisgICAgICAgICAgICB4ZW5f YmVfcHJpbnRmKCZpb3JlcS0+YmxrZGV2LT54ZW5kZXYsIDMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICJmYWlsZWQgdG8gY29weSBkYXRhICVkIGZvciBncmVmICVkLCBkb21pZCAlZFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vnc1tpXS5zdGF0dXMsIGlvcmVxLT5yZWZzW2ld LCBpb3JlcS0+ZG9taWRzW2ldKTsKKyAgICAgICAgICAgIGlvcmVxLT5haW9fZXJyb3JzKys7Cisg ICAgICAgICAgICByYyA9IC0xOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJjOwor fQorI2Vsc2UKK3N0YXRpYyB2b2lkIGZyZWVfYnVmZmVycyhzdHJ1Y3QgaW9yZXEgKmlvcmVxKQor eworICAgIGFib3J0KCk7Cit9CisKK3N0YXRpYyBpbnQgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMo c3RydWN0IGlvcmVxICppb3JlcSkKK3sKKyAgICBhYm9ydCgpOworfQorCitzdGF0aWMgaW50IGlv cmVxX2NvcHkoc3RydWN0IGlvcmVxICppb3JlcSkKK3sKKyAgICBhYm9ydCgpOworfQorI2VuZGlm CisKIHN0YXRpYyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSk7 CiAKIHN0YXRpYyB2b2lkIHFlbXVfYWlvX2NvbXBsZXRlKHZvaWQgKm9wYXF1ZSwgaW50IHJldCkK QEAgLTUxMSw4ICs2MTYsMzEgQEAgc3RhdGljIHZvaWQgcWVtdV9haW9fY29tcGxldGUodm9pZCAq b3BhcXVlLCBpbnQgcmV0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGlvcmVx LT5ibGtkZXYtPmZlYXR1cmVfZ3JhbnRfY29weSkgeworICAgICAgICBzd2l0Y2ggKGlvcmVxLT5y ZXEub3BlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgQkxLSUZfT1BfUkVBRDoKKyAgICAgICAgICAg IC8qIGluIGNhc2Ugb2YgZmFpbHVyZSBpb3JlcS0+YWlvX2Vycm9ycyBpcyBpbmNyZWFzZWQgKi8K KyAgICAgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICAgICAgICAgIGlvcmVxX2NvcHko aW9yZXEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZV9idWZmZXJzKGlvcmVxKTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgorICAgICAg ICBjYXNlIEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRToKKyAgICAgICAgICAgIGlmICghaW9yZXEt PnJlcS5ucl9zZWdtZW50cykgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg fQorICAgICAgICAgICAgZnJlZV9idWZmZXJzKGlvcmVxKTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK ICAgICBpb3JlcS0+c3RhdHVzID0gaW9yZXEtPmFpb19lcnJvcnMgPyBCTEtJRl9SU1BfRVJST1Ig OiBCTEtJRl9SU1BfT0tBWTsKLSAgICBpb3JlcV91bm1hcChpb3JlcSk7CisgICAgaWYgKCFpb3Jl cS0+YmxrZGV2LT5mZWF0dXJlX2dyYW50X2NvcHkpIHsKKyAgICAgICAgaW9yZXFfdW5tYXAoaW9y ZXEpOworICAgIH0KICAgICBpb3JlcV9maW5pc2goaW9yZXEpOwogICAgIHN3aXRjaCAoaW9yZXEt PnJlcS5vcGVyYXRpb24pIHsKICAgICBjYXNlIEJMS0lGX09QX1dSSVRFOgpAQCAtNTM4LDggKzY2 NiwyMCBAQCBzdGF0aWMgaW50IGlvcmVxX3J1bmlvX3FlbXVfYWlvKHN0cnVjdCBpb3JlcSAqaW9y ZXEpCiB7CiAgICAgc3RydWN0IFhlbkJsa0RldiAqYmxrZGV2ID0gaW9yZXEtPmJsa2RldjsKIAot ICAgIGlmIChpb3JlcS0+cmVxLm5yX3NlZ21lbnRzICYmIGlvcmVxX21hcChpb3JlcSkgPT0gLTEp IHsKLSAgICAgICAgZ290byBlcnJfbm9fbWFwOworICAgIGlmIChpb3JlcS0+YmxrZGV2LT5mZWF0 dXJlX2dyYW50X2NvcHkpIHsKKyAgICAgICAgaW9yZXFfaW5pdF9jb3B5X2J1ZmZlcnMoaW9yZXEp OworICAgICAgICBpZiAoaW9yZXEtPnJlcS5ucl9zZWdtZW50cyAmJiAoaW9yZXEtPnJlcS5vcGVy YXRpb24gPT0gQkxLSUZfT1BfV1JJVEUgfHwKKyAgICAgICAgICAgIGlvcmVxLT5yZXEub3BlcmF0 aW9uID09IEJMS0lGX09QX0ZMVVNIX0RJU0tDQUNIRSkpIHsKKyAgICAgICAgICAgIGlmIChpb3Jl cV9jb3B5KGlvcmVxKSkgeworICAgICAgICAgICAgICAgIGZyZWVfYnVmZmVycyhpb3JlcSk7Cisg ICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg IH0gZWxzZSB7CisgICAgICAgIGlmIChpb3JlcS0+cmVxLm5yX3NlZ21lbnRzICYmIGlvcmVxX21h cChpb3JlcSkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CiAgICAgfQogCiAg ICAgaW9yZXEtPmFpb19pbmZsaWdodCsrOwpAQCAtNTgyLDYgKzcyMiw5IEBAIHN0YXRpYyBpbnQg aW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKICAgICB9CiAgICAgZGVm YXVsdDoKICAgICAgICAgLyogdW5rbm93biBvcGVyYXRpb24gKHNob3VsZG4ndCBoYXBwZW4gLS0g cGFyc2UgY2F0Y2hlcyB0aGlzKSAqLworICAgICAgICBpZiAoIWlvcmVxLT5ibGtkZXYtPmZlYXR1 cmVfZ3JhbnRfY29weSkgeworICAgICAgICAgICAgaW9yZXFfdW5tYXAoaW9yZXEpOworICAgICAg ICB9CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIApAQCAtNTkwLDggKzczMyw2IEBAIHN0YXRp YyBpbnQgaW9yZXFfcnVuaW9fcWVtdV9haW8oc3RydWN0IGlvcmVxICppb3JlcSkKICAgICByZXR1 cm4gMDsKIAogZXJyOgotICAgIGlvcmVxX3VubWFwKGlvcmVxKTsKLWVycl9ub19tYXA6CiAgICAg aW9yZXFfZmluaXNoKGlvcmVxKTsKICAgICBpb3JlcS0+c3RhdHVzID0gQkxLSUZfUlNQX0VSUk9S OwogICAgIHJldHVybiAtMTsKQEAgLTEwMzIsNiArMTE3MywxMiBAQCBzdGF0aWMgaW50IGJsa19j b25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIAogICAgIHhlbl9iZV9iaW5kX2V2dGNo bigmYmxrZGV2LT54ZW5kZXYpOwogCisgICAgYmxrZGV2LT5mZWF0dXJlX2dyYW50X2NvcHkgPQor ICAgICAgICAgICAgICAgICh4ZW5nbnR0YWJfZ3JhbnRfY29weShibGtkZXYtPnhlbmRldi5nbnR0 YWJkZXYsIDAsIE5VTEwpID09IDApOworCisgICAgeGVuX2JlX3ByaW50ZigmYmxrZGV2LT54ZW5k ZXYsIDMsICJncmFudCBjb3B5IG9wZXJhdGlvbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIGJs a2Rldi0+ZmVhdHVyZV9ncmFudF9jb3B5ID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisKICAg ICB4ZW5fYmVfcHJpbnRmKCZibGtkZXYtPnhlbmRldiwgMSwgIm9rOiBwcm90byAlcywgcmluZy1y ZWYgJWQsICIKICAgICAgICAgICAgICAgICAgICJyZW1vdGUgcG9ydCAlZCwgbG9jYWwgcG9ydCAl ZFxuIiwKICAgICAgICAgICAgICAgICAgIGJsa2Rldi0+eGVuZGV2LnByb3RvY29sLCBibGtkZXYt PnJpbmdfcmVmLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oIGIvaW5j bHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCmluZGV4IGJkMzkyODcuLjhlMTU4MGQgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaAorKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5f Y29tbW9uLmgKQEAgLTQyNCw0ICs0MjQsMTggQEAgc3RhdGljIGlubGluZSBpbnQgeGVuX2RvbWFp bl9jcmVhdGUoeGNfaW50ZXJmYWNlICp4YywgdWludDMyX3Qgc3NpZHJlZiwKICNlbmRpZgogI2Vu ZGlmCiAKKy8qIFhlbiBiZWZvcmUgNC44ICovCisKKyNpZiBDT05GSUdfWEVOX0NUUkxfSU5URVJG QUNFX1ZFUlNJT04gPCA0ODAKKworCit0eXBlZGVmIHZvaWQgKnhlbmdudHRhYl9ncmFudF9jb3B5 X3NlZ21lbnRfdDsKKworc3RhdGljIGlubGluZSBpbnQgeGVuZ250dGFiX2dyYW50X2NvcHkoeGVu Z250dGFiX2hhbmRsZSAqeGd0LCB1aW50MzJfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhlbmdudHRhYl9ncmFudF9jb3B5X3NlZ21lbnRfdCAqc2VncykK K3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKyNlbmRpZgorCiAjZW5kaWYgLyogUUVNVV9IV19Y RU5fQ09NTU9OX0ggKi8KLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==