From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v5 09/13] xen/pvcalls: implement sendmsg Date: Fri, 6 Oct 2017 17:30:23 -0700 Message-ID: <1507336227-20477-9-git-send-email-sstabellini@kernel.org> References: <1507336227-20477-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507336227-20477-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: jgross@suse.com, Stefano Stabellini , boris.ostrovsky@oracle.com, sstabellini@kernel.org, linux-kernel@vger.kernel.org List-Id: xen-devel@lists.xenproject.org U2VuZCBkYXRhIHRvIGFuIGFjdGl2ZSBzb2NrZXQgYnkgY29weWluZyBkYXRhIHRvIHRoZSAib3V0 IiByaW5nLiBUYWtlCnRoZSBhY3RpdmUgc29ja2V0IG91dF9tdXRleCBzbyB0aGF0IG9ubHkgb25l IGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlCnJpbmcgYXQgYW55IGdpdmVuIHRpbWUuCgpJZiBub3Qg ZW5vdWdoIHJvb20gaXMgYXZhaWxhYmxlIG9uIHRoZSByaW5nLCByYXRoZXIgdGhhbiByZXR1cm5p bmcKaW1tZWRpYXRlbHkgb3Igc2xlZXAtd2FpdGluZywgc3BpbiBmb3IgdXAgdG8gNTAwMCBjeWNs ZXMuIFRoaXMgc21hbGwKb3B0aW1pemF0aW9uIHR1cm5zIG91dCB0byBpbXByb3ZlIHBlcmZvcm1h bmNlIHNpZ25pZmljYW50bHkuCgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0 ZWZhbm9AYXBvcmV0by5jb20+CkNDOiBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbQpDQzogamdy b3NzQHN1c2UuY29tCi0tLQogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jIHwgMTE4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3hlbi9wdmNh bGxzLWZyb250LmggfCAgIDMgKysKIDIgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMgYi9kcml2ZXJzL3hlbi9w dmNhbGxzLWZyb250LmMKaW5kZXggODk1OGU3NC4uYzEzYzQwYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy94ZW4vcHZjYWxscy1mcm9udC5jCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYwpA QCAtMjksNiArMjksNyBAQAogI2RlZmluZSBQVkNBTExTX0lOVkFMSURfSUQgVUlOVF9NQVgKICNk ZWZpbmUgUFZDQUxMU19SSU5HX09SREVSIFhFTkJVU19NQVhfUklOR19HUkFOVF9PUkRFUgogI2Rl ZmluZSBQVkNBTExTX05SX1JFUV9QRVJfUklORyBfX0NPTlNUX1JJTkdfU0laRSh4ZW5fcHZjYWxs cywgWEVOX1BBR0VfU0laRSkKKyNkZWZpbmUgUFZDQUxMU19GUk9OVF9NQVhfU1BJTiA1MDAwCiAK IHN0cnVjdCBwdmNhbGxzX2JlZGF0YSB7CiAJc3RydWN0IHhlbl9wdmNhbGxzX2Zyb250X3Jpbmcg cmluZzsKQEAgLTEwMCw2ICsxMDEsMjMgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0X3JlcXVlc3Qo c3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGEsIGludCAqcmVxX2lkKQogCXJldHVybiAwOwog fQogCitzdGF0aWMgYm9vbCBwdmNhbGxzX2Zyb250X3dyaXRlX3RvZG8oc3RydWN0IHNvY2tfbWFw cGluZyAqbWFwKQoreworCXN0cnVjdCBwdmNhbGxzX2RhdGFfaW50ZiAqaW50ZiA9IG1hcC0+YWN0 aXZlLnJpbmc7CisJUklOR19JRFggY29ucywgcHJvZCwgc2l6ZSA9IFhFTl9GTEVYX1JJTkdfU0la RShQVkNBTExTX1JJTkdfT1JERVIpOworCWludDMyX3QgZXJyb3I7CisKKwllcnJvciA9IGludGYt Pm91dF9lcnJvcjsKKwlpZiAoZXJyb3IgPT0gLUVOT1RDT05OKQorCQlyZXR1cm4gZmFsc2U7CisJ aWYgKGVycm9yICE9IDApCisJCXJldHVybiB0cnVlOworCisJY29ucyA9IGludGYtPm91dF9jb25z OworCXByb2QgPSBpbnRmLT5vdXRfcHJvZDsKKwlyZXR1cm4gISEoc2l6ZSAtIHB2Y2FsbHNfcXVl dWVkKHByb2QsIGNvbnMsIHNpemUpKTsKK30KKwogc3RhdGljIGlycXJldHVybl90IHB2Y2FsbHNf ZnJvbnRfZXZlbnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJc3RydWN0IHhl bmJ1c19kZXZpY2UgKmRldiA9IGRldl9pZDsKQEAgLTM2NCw2ICszODIsMTA2IEBAIGludCBwdmNh bGxzX2Zyb250X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICph ZGRyLAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgX193cml0ZV9yaW5nKHN0cnVjdCBw dmNhbGxzX2RhdGFfaW50ZiAqaW50ZiwKKwkJCXN0cnVjdCBwdmNhbGxzX2RhdGEgKmRhdGEsCisJ CQlzdHJ1Y3QgaW92X2l0ZXIgKm1zZ19pdGVyLAorCQkJaW50IGxlbikKK3sKKwlSSU5HX0lEWCBj b25zLCBwcm9kLCBzaXplLCBtYXNrZWRfcHJvZCwgbWFza2VkX2NvbnM7CisJUklOR19JRFggYXJy YXlfc2l6ZSA9IFhFTl9GTEVYX1JJTkdfU0laRShQVkNBTExTX1JJTkdfT1JERVIpOworCWludDMy X3QgZXJyb3I7CisKKwllcnJvciA9IGludGYtPm91dF9lcnJvcjsKKwlpZiAoZXJyb3IgPCAwKQor CQlyZXR1cm4gZXJyb3I7CisJY29ucyA9IGludGYtPm91dF9jb25zOworCXByb2QgPSBpbnRmLT5v dXRfcHJvZDsKKwkvKiByZWFkIGluZGV4ZXMgYmVmb3JlIGNvbnRpbnVpbmcgKi8KKwl2aXJ0X21i KCk7CisKKwlzaXplID0gcHZjYWxsc19xdWV1ZWQocHJvZCwgY29ucywgYXJyYXlfc2l6ZSk7CisJ aWYgKHNpemUgPj0gYXJyYXlfc2l6ZSkKKwkJcmV0dXJuIDA7CisJaWYgKGxlbiA+IGFycmF5X3Np emUgLSBzaXplKQorCQlsZW4gPSBhcnJheV9zaXplIC0gc2l6ZTsKKworCW1hc2tlZF9wcm9kID0g cHZjYWxsc19tYXNrKHByb2QsIGFycmF5X3NpemUpOworCW1hc2tlZF9jb25zID0gcHZjYWxsc19t YXNrKGNvbnMsIGFycmF5X3NpemUpOworCisJaWYgKG1hc2tlZF9wcm9kIDwgbWFza2VkX2NvbnMp IHsKKwkJY29weV9mcm9tX2l0ZXIoZGF0YS0+b3V0ICsgbWFza2VkX3Byb2QsIGxlbiwgbXNnX2l0 ZXIpOworCX0gZWxzZSB7CisJCWlmIChsZW4gPiBhcnJheV9zaXplIC0gbWFza2VkX3Byb2QpIHsK KwkJCWNvcHlfZnJvbV9pdGVyKGRhdGEtPm91dCArIG1hc2tlZF9wcm9kLAorCQkJCSAgICAgICBh cnJheV9zaXplIC0gbWFza2VkX3Byb2QsIG1zZ19pdGVyKTsKKwkJCWNvcHlfZnJvbV9pdGVyKGRh dGEtPm91dCwKKwkJCQkgICAgICAgbGVuIC0gKGFycmF5X3NpemUgLSBtYXNrZWRfcHJvZCksCisJ CQkJICAgICAgIG1zZ19pdGVyKTsKKwkJfSBlbHNlIHsKKwkJCWNvcHlfZnJvbV9pdGVyKGRhdGEt Pm91dCArIG1hc2tlZF9wcm9kLCBsZW4sIG1zZ19pdGVyKTsKKwkJfQorCX0KKwkvKiB3cml0ZSB0 byByaW5nIGJlZm9yZSB1cGRhdGluZyBwb2ludGVyICovCisJdmlydF93bWIoKTsKKwlpbnRmLT5v dXRfcHJvZCArPSBsZW47CisKKwlyZXR1cm4gbGVuOworfQorCitpbnQgcHZjYWxsc19mcm9udF9z ZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKKwkJCSAgc2l6 ZV90IGxlbikKK3sKKwlzdHJ1Y3QgcHZjYWxsc19iZWRhdGEgKmJlZGF0YTsKKwlzdHJ1Y3Qgc29j a19tYXBwaW5nICptYXA7CisJaW50IHNlbnQsIHRvdF9zZW50ID0gMDsKKwlpbnQgY291bnQgPSAw LCBmbGFnczsKKworCWZsYWdzID0gbXNnLT5tc2dfZmxhZ3M7CisJaWYgKGZsYWdzICYgKE1TR19D T05GSVJNfE1TR19ET05UUk9VVEV8TVNHX0VPUnxNU0dfT09CKSkKKwkJcmV0dXJuIC1FT1BOT1RT VVBQOworCisJcHZjYWxsc19lbnRlcigpOworCWlmICghcHZjYWxsc19mcm9udF9kZXYpIHsKKwkJ cHZjYWxsc19leGl0KCk7CisJCXJldHVybiAtRU5PVENPTk47CisJfQorCWJlZGF0YSA9IGRldl9n ZXRfZHJ2ZGF0YSgmcHZjYWxsc19mcm9udF9kZXYtPmRldik7CisKKwltYXAgPSAoc3RydWN0IHNv Y2tfbWFwcGluZyAqKSBzb2NrLT5zay0+c2tfc2VuZF9oZWFkOworCWlmICghbWFwKSB7CisJCXB2 Y2FsbHNfZXhpdCgpOworCQlyZXR1cm4gLUVOT1RTT0NLOworCX0KKworCW11dGV4X2xvY2soJm1h cC0+YWN0aXZlLm91dF9tdXRleCk7CisJaWYgKChmbGFncyAmIE1TR19ET05UV0FJVCkgJiYgIXB2 Y2FsbHNfZnJvbnRfd3JpdGVfdG9kbyhtYXApKSB7CisJCW11dGV4X3VubG9jaygmbWFwLT5hY3Rp dmUub3V0X211dGV4KTsKKwkJcHZjYWxsc19leGl0KCk7CisJCXJldHVybiAtRUFHQUlOOworCX0K KwlpZiAobGVuID4gSU5UX01BWCkKKwkJbGVuID0gSU5UX01BWDsKKworYWdhaW46CisJY291bnQr KzsKKwlzZW50ID0gX193cml0ZV9yaW5nKG1hcC0+YWN0aXZlLnJpbmcsCisJCQkgICAgJm1hcC0+ YWN0aXZlLmRhdGEsICZtc2ctPm1zZ19pdGVyLAorCQkJICAgIGxlbik7CisJaWYgKHNlbnQgPiAw KSB7CisJCWxlbiAtPSBzZW50OworCQl0b3Rfc2VudCArPSBzZW50OworCQlub3RpZnlfcmVtb3Rl X3ZpYV9pcnEobWFwLT5hY3RpdmUuaXJxKTsKKwl9CisJaWYgKHNlbnQgPj0gMCAmJiBsZW4gPiAw ICYmIGNvdW50IDwgUFZDQUxMU19GUk9OVF9NQVhfU1BJTikKKwkJZ290byBhZ2FpbjsKKwlpZiAo c2VudCA8IDApCisJCXRvdF9zZW50ID0gc2VudDsKKworCW11dGV4X3VubG9jaygmbWFwLT5hY3Rp dmUub3V0X211dGV4KTsKKwlwdmNhbGxzX2V4aXQoKTsKKwlyZXR1cm4gdG90X3NlbnQ7Cit9CisK IGludCBwdmNhbGxzX2Zyb250X2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2th ZGRyICphZGRyLCBpbnQgYWRkcl9sZW4pCiB7CiAJc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRh dGE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmggYi9kcml2ZXJzL3hl bi9wdmNhbGxzLWZyb250LmgKaW5kZXggYWI0ZjFkYS4uZDkzN2MyNCAxMDA2NDQKLS0tIGEvZHJp dmVycy94ZW4vcHZjYWxscy1mcm9udC5oCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQu aApAQCAtMTMsNSArMTMsOCBAQCBpbnQgcHZjYWxsc19mcm9udF9iaW5kKHN0cnVjdCBzb2NrZXQg KnNvY2ssCiBpbnQgcHZjYWxsc19mcm9udF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywKIAkJ CSBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCQkJIGludCBmbGFncyk7CitpbnQgcHZjYWxsc19m cm9udF9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssCisJCQkgIHN0cnVjdCBtc2doZHIgKm1z ZywKKwkJCSAgc2l6ZV90IGxlbik7CiAKICNlbmRpZgotLSAKMS45LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK