From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 09/13] xen/pvcalls: implement sendmsg Date: Mon, 31 Jul 2017 15:57:31 -0700 Message-ID: <1501541855-7354-9-git-send-email-sstabellini@kernel.org> References: <1501541855-7354-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: <1501541855-7354-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 b3NzQHN1c2UuY29tCi0tLQogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jIHwgMTA5ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3hlbi9wdmNh bGxzLWZyb250LmggfCAgIDMgKysKIDIgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMgYi9kcml2ZXJzL3hlbi9w dmNhbGxzLWZyb250LmMKaW5kZXggZjgzYjkxMC4uMzY5YWNkZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy94ZW4vcHZjYWxscy1mcm9udC5jCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYwpA QCAtMjksNiArMjksNyBAQAogI2RlZmluZSBQVkNBTExTX0lOVkFMSURfSUQgVUlOVF9NQVgKICNk ZWZpbmUgUFZDQUxMU19SSU5HX09SREVSIFhFTkJVU19NQVhfUklOR19HUkFOVF9PUkRFUgogI2Rl ZmluZSBQVkNBTExTX05SX1JFUV9QRVJfUklORyBfX0NPTlNUX1JJTkdfU0laRSh4ZW5fcHZjYWxs cywgWEVOX1BBR0VfU0laRSkKKyNkZWZpbmUgUFZDQUxMU19GUk9OVF9NQVhfU1BJTiA1MDAwCiAK IHN0cnVjdCBwdmNhbGxzX2JlZGF0YSB7CiAJc3RydWN0IHhlbl9wdmNhbGxzX2Zyb250X3Jpbmcg cmluZzsKQEAgLTg4LDYgKzg5LDIyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldF9yZXF1ZXN0KHN0 cnVjdCBwdmNhbGxzX2JlZGF0YSAqYmVkYXRhLCBpbnQgKnJlcV9pZCkKIAlyZXR1cm4gMDsKIH0K IAorc3RhdGljIGludCBwdmNhbGxzX2Zyb250X3dyaXRlX3RvZG8oc3RydWN0IHNvY2tfbWFwcGlu ZyAqbWFwKQoreworCXN0cnVjdCBwdmNhbGxzX2RhdGFfaW50ZiAqaW50ZiA9IG1hcC0+YWN0aXZl LnJpbmc7CisJUklOR19JRFggY29ucywgcHJvZCwgc2l6ZSA9IFhFTl9GTEVYX1JJTkdfU0laRShp bnRmLT5yaW5nX29yZGVyKTsKKwlpbnQzMl90IGVycm9yOworCisJY29ucyA9IGludGYtPm91dF9j b25zOworCXByb2QgPSBpbnRmLT5vdXRfcHJvZDsKKwllcnJvciA9IGludGYtPm91dF9lcnJvcjsK KwlpZiAoZXJyb3IgPT0gLUVOT1RDT05OKQorCQlyZXR1cm4gMDsKKwlpZiAoZXJyb3IgIT0gMCkK KwkJcmV0dXJuIGVycm9yOworCXJldHVybiBzaXplIC0gcHZjYWxsc19xdWV1ZWQocHJvZCwgY29u cywgc2l6ZSk7Cit9CisKIHN0YXRpYyBpcnFyZXR1cm5fdCBwdmNhbGxzX2Zyb250X2V2ZW50X2hh bmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogewogCXN0cnVjdCB4ZW5idXNfZGV2aWNlICpk ZXYgPSBkZXZfaWQ7CkBAIC0zMjUsNiArMzQyLDk4IEBAIGludCBwdmNhbGxzX2Zyb250X2Nvbm5l Y3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICphZGRyLAogCXJldHVybiBy ZXQ7CiB9CiAKK3N0YXRpYyBpbnQgX193cml0ZV9yaW5nKHN0cnVjdCBwdmNhbGxzX2RhdGFfaW50 ZiAqaW50ZiwKKwkJCXN0cnVjdCBwdmNhbGxzX2RhdGEgKmRhdGEsCisJCQlzdHJ1Y3QgaW92X2l0 ZXIgKm1zZ19pdGVyLAorCQkJc2l6ZV90IGxlbikKK3sKKwlSSU5HX0lEWCBjb25zLCBwcm9kLCBz aXplLCBtYXNrZWRfcHJvZCwgbWFza2VkX2NvbnM7CisJUklOR19JRFggYXJyYXlfc2l6ZSA9IFhF Tl9GTEVYX1JJTkdfU0laRShpbnRmLT5yaW5nX29yZGVyKTsKKwlpbnQzMl90IGVycm9yOworCisJ Y29ucyA9IGludGYtPm91dF9jb25zOworCXByb2QgPSBpbnRmLT5vdXRfcHJvZDsKKwllcnJvciA9 IGludGYtPm91dF9lcnJvcjsKKwkvKiByZWFkIGluZGV4ZXMgYmVmb3JlIGNvbnRpbnVpbmcgKi8K Kwl2aXJ0X21iKCk7CisKKwlpZiAoZXJyb3IgPCAwKQorCQlyZXR1cm4gZXJyb3I7CisKKwlzaXpl ID0gcHZjYWxsc19xdWV1ZWQocHJvZCwgY29ucywgYXJyYXlfc2l6ZSk7CisJaWYgKHNpemUgPj0g YXJyYXlfc2l6ZSkKKwkJcmV0dXJuIDA7CisJaWYgKGxlbiA+IGFycmF5X3NpemUgLSBzaXplKQor CQlsZW4gPSBhcnJheV9zaXplIC0gc2l6ZTsKKworCW1hc2tlZF9wcm9kID0gcHZjYWxsc19tYXNr KHByb2QsIGFycmF5X3NpemUpOworCW1hc2tlZF9jb25zID0gcHZjYWxsc19tYXNrKGNvbnMsIGFy cmF5X3NpemUpOworCisJaWYgKG1hc2tlZF9wcm9kIDwgbWFza2VkX2NvbnMpIHsKKwkJY29weV9m cm9tX2l0ZXIoZGF0YS0+b3V0ICsgbWFza2VkX3Byb2QsIGxlbiwgbXNnX2l0ZXIpOworCX0gZWxz ZSB7CisJCWlmIChsZW4gPiBhcnJheV9zaXplIC0gbWFza2VkX3Byb2QpIHsKKwkJCWNvcHlfZnJv bV9pdGVyKGRhdGEtPm91dCArIG1hc2tlZF9wcm9kLAorCQkJCSAgICAgICBhcnJheV9zaXplIC0g bWFza2VkX3Byb2QsIG1zZ19pdGVyKTsKKwkJCWNvcHlfZnJvbV9pdGVyKGRhdGEtPm91dCwKKwkJ CQkgICAgICAgbGVuIC0gKGFycmF5X3NpemUgLSBtYXNrZWRfcHJvZCksCisJCQkJICAgICAgIG1z Z19pdGVyKTsKKwkJfSBlbHNlIHsKKwkJCWNvcHlfZnJvbV9pdGVyKGRhdGEtPm91dCArIG1hc2tl ZF9wcm9kLCBsZW4sIG1zZ19pdGVyKTsKKwkJfQorCX0KKwkvKiB3cml0ZSB0byByaW5nIGJlZm9y ZSB1cGRhdGluZyBwb2ludGVyICovCisJdmlydF93bWIoKTsKKwlpbnRmLT5vdXRfcHJvZCArPSBs ZW47CisKKwlyZXR1cm4gbGVuOworfQorCitpbnQgcHZjYWxsc19mcm9udF9zZW5kbXNnKHN0cnVj dCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywKKwkJCSAgc2l6ZV90IGxlbikKK3sK KwlzdHJ1Y3QgcHZjYWxsc19iZWRhdGEgKmJlZGF0YTsKKwlzdHJ1Y3Qgc29ja19tYXBwaW5nICpt YXA7CisJaW50IHNlbnQgPSAwLCB0b3Rfc2VudCA9IDA7CisJaW50IGNvdW50ID0gMCwgZmxhZ3M7 CisKKwlpZiAoIXB2Y2FsbHNfZnJvbnRfZGV2KQorCQlyZXR1cm4gLUVOT1RDT05OOworCWJlZGF0 YSA9IGRldl9nZXRfZHJ2ZGF0YSgmcHZjYWxsc19mcm9udF9kZXYtPmRldik7CisKKwltYXAgPSAo c3RydWN0IHNvY2tfbWFwcGluZyAqKSBSRUFEX09OQ0Uoc29jay0+c2stPnNrX3NlbmRfaGVhZCk7 CisJaWYgKCFtYXApCisJCXJldHVybiAtRU5PVFNPQ0s7CisKKwlmbGFncyA9IG1zZy0+bXNnX2Zs YWdzOworCWlmIChmbGFncyAmIChNU0dfQ09ORklSTXxNU0dfRE9OVFJPVVRFfE1TR19FT1J8TVNH X09PQikpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCW11dGV4X2xvY2soJm1hcC0+YWN0aXZl Lm91dF9tdXRleCk7CisJaWYgKChmbGFncyAmIE1TR19ET05UV0FJVCkgJiYgIXB2Y2FsbHNfZnJv bnRfd3JpdGVfdG9kbyhtYXApKSB7CisJCW11dGV4X3VubG9jaygmbWFwLT5hY3RpdmUub3V0X211 dGV4KTsKKwkJcmV0dXJuIC1FQUdBSU47CisJfQorCithZ2FpbjoKKwljb3VudCsrOworCXNlbnQg PSBfX3dyaXRlX3JpbmcobWFwLT5hY3RpdmUucmluZywKKwkJCSAgICAmbWFwLT5hY3RpdmUuZGF0 YSwgJm1zZy0+bXNnX2l0ZXIsCisJCQkgICAgbGVuKTsKKwlpZiAoc2VudCA+IDApIHsKKwkJbGVu IC09IHNlbnQ7CisJCXRvdF9zZW50ICs9IHNlbnQ7CisJCW5vdGlmeV9yZW1vdGVfdmlhX2lycSht YXAtPmFjdGl2ZS5pcnEpOworCX0KKwlpZiAoc2VudCA+PSAwICYmIGxlbiA+IDAgJiYgY291bnQg PCBQVkNBTExTX0ZST05UX01BWF9TUElOKQorCQlnb3RvIGFnYWluOworCWlmIChzZW50IDwgMCkK KwkJdG90X3NlbnQgPSBzZW50OworCisJbXV0ZXhfdW5sb2NrKCZtYXAtPmFjdGl2ZS5vdXRfbXV0 ZXgpOworCXJldHVybiB0b3Rfc2VudDsKK30KKwogaW50IHB2Y2FsbHNfZnJvbnRfYmluZChzdHJ1 Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRyX2xlbikKIHsK IAlzdHJ1Y3QgcHZjYWxsc19iZWRhdGEgKmJlZGF0YTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVu L3B2Y2FsbHMtZnJvbnQuaCBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaAppbmRleCBhYjRm MWRhLi5kOTM3YzI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKKysr IGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oCkBAIC0xMyw1ICsxMyw4IEBAIGludCBwdmNh bGxzX2Zyb250X2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywKIGludCBwdmNhbGxzX2Zyb250X2Fj Y2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLAogCQkJIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAJ CQkgaW50IGZsYWdzKTsKK2ludCBwdmNhbGxzX2Zyb250X3NlbmRtc2coc3RydWN0IHNvY2tldCAq c29jaywKKwkJCSAgc3RydWN0IG1zZ2hkciAqbXNnLAorCQkJICBzaXplX3QgbGVuKTsKIAogI2Vu ZGlmCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=