From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v1 08/13] xen/pvcalls: implement sendmsg Date: Fri, 21 Jul 2017 17:11:58 -0700 Message-ID: <1500682323-25940-8-git-send-email-sstabellini@kernel.org> References: <1500682323-25940-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: <1500682323-25940-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 dmNhbGxzLWZyb250LmMKaW5kZXggZjNhMDRhMi4uYmYyOWY0MCAxMDA2NDQKLS0tIGEvZHJpdmVy cy94ZW4vcHZjYWxscy1mcm9udC5jCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYwpA QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQVkNBTExTX0lOVkFMSURfSUQgKFVJTlRfTUFYKQog I2RlZmluZSBSSU5HX09SREVSIFhFTkJVU19NQVhfUklOR19HUkFOVF9PUkRFUgogI2RlZmluZSBQ VkNBTExTX05SX1JFUV9QRVJfUklORyBfX0NPTlNUX1JJTkdfU0laRSh4ZW5fcHZjYWxscywgWEVO X1BBR0VfU0laRSkKKyNkZWZpbmUgUFZDQUxMU19GUk9OX01BWF9TUElOIDUwMDAKIAogc3RydWN0 IHB2Y2FsbHNfYmVkYXRhIHsKIAlzdHJ1Y3QgeGVuX3B2Y2FsbHNfZnJvbnRfcmluZyByaW5nOwpA QCAtNzcsNiArNzgsMjIgQEAgc3RydWN0IHNvY2tfbWFwcGluZyB7CiAJfTsKIH07CiAKK3N0YXRp YyBpbnQgcHZjYWxsc19mcm9udF93cml0ZV90b2RvKHN0cnVjdCBzb2NrX21hcHBpbmcgKm1hcCkK K3sKKwlzdHJ1Y3QgcHZjYWxsc19kYXRhX2ludGYgKmludGYgPSBtYXAtPmFjdGl2ZS5yaW5nOwor CVJJTkdfSURYIGNvbnMsIHByb2QsIHNpemUgPSBYRU5fRkxFWF9SSU5HX1NJWkUoaW50Zi0+cmlu Z19vcmRlcik7CisJaW50MzJfdCBlcnJvcjsKKworCWNvbnMgPSBpbnRmLT5vdXRfY29uczsKKwlw cm9kID0gaW50Zi0+b3V0X3Byb2Q7CisJZXJyb3IgPSBpbnRmLT5vdXRfZXJyb3I7CisJaWYgKGVy cm9yID09IC1FTk9UQ09OTikKKwkJcmV0dXJuIDA7CisJaWYgKGVycm9yICE9IDApCisJCXJldHVy biBlcnJvcjsKKwlyZXR1cm4gc2l6ZSAtIHB2Y2FsbHNfcXVldWVkKHByb2QsIGNvbnMsIHNpemUp OworfQorCiBzdGF0aWMgaXJxcmV0dXJuX3QgcHZjYWxsc19mcm9udF9ldmVudF9oYW5kbGVyKGlu dCBpcnEsIHZvaWQgKmRldl9pZCkKIHsKIAlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2ID0gZGV2 X2lkOwpAQCAtMzA0LDYgKzMyMSw5OCBAQCBpbnQgcHZjYWxsc19mcm9udF9jb25uZWN0KHN0cnVj dCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKIAlyZXR1cm4gcmV0OwogfQog CitzdGF0aWMgaW50IF9fd3JpdGVfcmluZyhzdHJ1Y3QgcHZjYWxsc19kYXRhX2ludGYgKmludGYs CisJCQlzdHJ1Y3QgcHZjYWxsc19kYXRhICpkYXRhLAorCQkJc3RydWN0IGlvdl9pdGVyICptc2df aXRlciwKKwkJCXNpemVfdCBsZW4pCit7CisJUklOR19JRFggY29ucywgcHJvZCwgc2l6ZSwgbWFz a2VkX3Byb2QsIG1hc2tlZF9jb25zOworCVJJTkdfSURYIGFycmF5X3NpemUgPSBYRU5fRkxFWF9S SU5HX1NJWkUoaW50Zi0+cmluZ19vcmRlcik7CisJaW50MzJfdCBlcnJvcjsKKworCWNvbnMgPSBp bnRmLT5vdXRfY29uczsKKwlwcm9kID0gaW50Zi0+b3V0X3Byb2Q7CisJZXJyb3IgPSBpbnRmLT5v dXRfZXJyb3I7CisJLyogcmVhZCBpbmRleGVzIGJlZm9yZSBjb250aW51aW5nICovCisJdmlydF9t YigpOworCisJaWYgKGVycm9yIDwgMCkKKwkJcmV0dXJuIGVycm9yOworCisJc2l6ZSA9IHB2Y2Fs bHNfcXVldWVkKHByb2QsIGNvbnMsIGFycmF5X3NpemUpOworCWlmIChzaXplID49IGFycmF5X3Np emUpCisJCXJldHVybiAwOworCWlmIChsZW4gPiBhcnJheV9zaXplIC0gc2l6ZSkKKwkJbGVuID0g YXJyYXlfc2l6ZSAtIHNpemU7CisKKwltYXNrZWRfcHJvZCA9IHB2Y2FsbHNfbWFzayhwcm9kLCBh cnJheV9zaXplKTsKKwltYXNrZWRfY29ucyA9IHB2Y2FsbHNfbWFzayhjb25zLCBhcnJheV9zaXpl KTsKKworCWlmIChtYXNrZWRfcHJvZCA8IG1hc2tlZF9jb25zKSB7CisJCWNvcHlfZnJvbV9pdGVy KGRhdGEtPm91dCArIG1hc2tlZF9wcm9kLCBsZW4sIG1zZ19pdGVyKTsKKwl9IGVsc2UgeworCQlp ZiAobGVuID4gYXJyYXlfc2l6ZSAtIG1hc2tlZF9wcm9kKSB7CisJCQljb3B5X2Zyb21faXRlcihk YXRhLT5vdXQgKyBtYXNrZWRfcHJvZCwKKwkJCQkgICAgICAgYXJyYXlfc2l6ZSAtIG1hc2tlZF9w cm9kLCBtc2dfaXRlcik7CisJCQljb3B5X2Zyb21faXRlcihkYXRhLT5vdXQsCisJCQkJICAgICAg IGxlbiAtIChhcnJheV9zaXplIC0gbWFza2VkX3Byb2QpLAorCQkJCSAgICAgICBtc2dfaXRlcik7 CisJCX0gZWxzZSB7CisJCQljb3B5X2Zyb21faXRlcihkYXRhLT5vdXQgKyBtYXNrZWRfcHJvZCwg bGVuLCBtc2dfaXRlcik7CisJCX0KKwl9CisJLyogd3JpdGUgdG8gcmluZyBiZWZvcmUgdXBkYXRp bmcgcG9pbnRlciAqLworCXZpcnRfd21iKCk7CisJaW50Zi0+b3V0X3Byb2QgKz0gbGVuOworCisJ cmV0dXJuIGxlbjsKK30KKworaW50IHB2Y2FsbHNfZnJvbnRfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0 ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csCisJCQkgIHNpemVfdCBsZW4pCit7CisJc3RydWN0 IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7CisJc3RydWN0IHNvY2tfbWFwcGluZyAqbWFwOworCWlu dCBzZW50ID0gMCwgdG90X3NlbnQgPSAwOworCWludCBjb3VudCA9IDAsIGZsYWdzOworCisJaWYg KCFwdmNhbGxzX2Zyb250X2RldikKKwkJcmV0dXJuIC1FTk9UQ09OTjsKKwliZWRhdGEgPSBkZXZf Z2V0X2RydmRhdGEoJnB2Y2FsbHNfZnJvbnRfZGV2LT5kZXYpOworCisJbWFwID0gKHN0cnVjdCBz b2NrX21hcHBpbmcgKikgUkVBRF9PTkNFKHNvY2stPnNrLT5za19zZW5kX2hlYWQpOworCWlmICgh bWFwKQorCQlyZXR1cm4gLUVOT1RTT0NLOworCisJZmxhZ3MgPSBtc2ctPm1zZ19mbGFnczsKKwlp ZiAoZmxhZ3MgJiAoTVNHX0NPTkZJUk18TVNHX0RPTlRST1VURXxNU0dfRU9SfE1TR19PT0IpKQor CQlyZXR1cm4gLUVPUE5PVFNVUFA7CisKKwltdXRleF9sb2NrKCZtYXAtPmFjdGl2ZS5vdXRfbXV0 ZXgpOworCWlmICgoZmxhZ3MgJiBNU0dfRE9OVFdBSVQpICYmICFwdmNhbGxzX2Zyb250X3dyaXRl X3RvZG8obWFwKSkgeworCQltdXRleF91bmxvY2soJm1hcC0+YWN0aXZlLm91dF9tdXRleCk7CisJ CXJldHVybiAtRUFHQUlOOworCX0KKworYWdhaW46CisJY291bnQrKzsKKwlzZW50ID0gX193cml0 ZV9yaW5nKG1hcC0+YWN0aXZlLnJpbmcsCisJCQkgICAgJm1hcC0+YWN0aXZlLmRhdGEsICZtc2ct Pm1zZ19pdGVyLAorCQkJICAgIGxlbik7CisJaWYgKHNlbnQgPiAwKSB7CisJCWxlbiAtPSBzZW50 OworCQl0b3Rfc2VudCArPSBzZW50OworCQlub3RpZnlfcmVtb3RlX3ZpYV9pcnEobWFwLT5hY3Rp dmUuaXJxKTsKKwl9CisJaWYgKHNlbnQgPj0gMCAmJiBsZW4gPiAwICYmIGNvdW50IDwgUFZDQUxM U19GUk9OX01BWF9TUElOKQorCQlnb3RvIGFnYWluOworCWlmIChzZW50IDwgMCkKKwkJdG90X3Nl bnQgPSBzZW50OworCisJbXV0ZXhfdW5sb2NrKCZtYXAtPmFjdGl2ZS5vdXRfbXV0ZXgpOworCXJl dHVybiB0b3Rfc2VudDsKK30KKwogaW50IHB2Y2FsbHNfZnJvbnRfYmluZChzdHJ1Y3Qgc29ja2V0 ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRyX2xlbikKIHsKIAlzdHJ1Y3Qg cHZjYWxsc19iZWRhdGEgKmJlZGF0YTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3B2Y2FsbHMt ZnJvbnQuaCBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaAppbmRleCBhYjRmMWRhLi5kOTM3 YzI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKKysrIGIvZHJpdmVy cy94ZW4vcHZjYWxscy1mcm9udC5oCkBAIC0xMyw1ICsxMyw4IEBAIGludCBwdmNhbGxzX2Zyb250 X2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywKIGludCBwdmNhbGxzX2Zyb250X2FjY2VwdChzdHJ1 Y3Qgc29ja2V0ICpzb2NrLAogCQkJIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAJCQkgaW50IGZs YWdzKTsKK2ludCBwdmNhbGxzX2Zyb250X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywKKwkJ CSAgc3RydWN0IG1zZ2hkciAqbXNnLAorCQkJICBzaXplX3QgbGVuKTsKIAogI2VuZGlmCi0tIAox LjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=