From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v2 09/13] xen/pvcalls: implement recvmsg Date: Tue, 25 Jul 2017 14:22:06 -0700 Message-ID: <1501017730-12797-9-git-send-email-sstabellini@kernel.org> References: <1501017730-12797-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: <1501017730-12797-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 SW1wbGVtZW50IHJlY3Ztc2cgYnkgY29weWluZyBkYXRhIGZyb20gdGhlICJpbiIgcmluZy4gSWYg bm90IGVub3VnaCBkYXRhCmlzIGF2YWlsYWJsZSBhbmQgdGhlIHJlY3Ztc2cgY2FsbCBpcyBibG9j a2luZywgdGhlbiB3YWl0IG9uIHRoZQppbmZsaWdodF9jb25uX3JlcSB3YWl0cXVldWUuIFRha2Ug dGhlIGFjdGl2ZSBzb2NrZXQgaW5fbXV0ZXggc28gdGhhdApvbmx5IG9uZSBmdW5jdGlvbiBjYW4g YWNjZXNzIHRoZSByaW5nIGF0IGFueSBnaXZlbiB0aW1lLgoKSWYgbm90IGVub3VnaCBkYXRhIGlz IGF2YWlsYWJsZSBvbiB0aGUgcmluZywgcmF0aGVyIHRoYW4gcmV0dXJuaW5nCmltbWVkaWF0ZWx5 IG9yIHNsZWVwLXdhaXRpbmcsIHNwaW4gZm9yIHVwIHRvIDUwMDAgY3ljbGVzLiBUaGlzIHNtYWxs Cm9wdGltaXphdGlvbiB0dXJucyBvdXQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgbGF0ZW5j eSBzaWduaWZpY2FudGx5LgoKU2lnbmVkLW9mZi1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVm YW5vQGFwb3JldG8uY29tPgpDQzogYm9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20KQ0M6IGpncm9z c0BzdXNlLmNvbQotLS0KIGRyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYyB8IDEwNiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy94ZW4vcHZjYWxs cy1mcm9udC5oIHwgICA0ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jIGIvZHJpdmVycy94ZW4vcHZj YWxscy1mcm9udC5jCmluZGV4IGQ4ZWQyODAuLmI0Y2E1NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv eGVuL3B2Y2FsbHMtZnJvbnQuYworKysgYi9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMKQEAg LTk2LDYgKzk2LDIwIEBAIHN0YXRpYyBpbnQgcHZjYWxsc19mcm9udF93cml0ZV90b2RvKHN0cnVj dCBzb2NrX21hcHBpbmcgKm1hcCkKIAlyZXR1cm4gc2l6ZSAtIHB2Y2FsbHNfcXVldWVkKHByb2Qs IGNvbnMsIHNpemUpOwogfQogCitzdGF0aWMgYm9vbCBwdmNhbGxzX2Zyb250X3JlYWRfdG9kbyhz dHJ1Y3Qgc29ja19tYXBwaW5nICptYXApCit7CisJc3RydWN0IHB2Y2FsbHNfZGF0YV9pbnRmICpp bnRmID0gbWFwLT5hY3RpdmUucmluZzsKKwlSSU5HX0lEWCBjb25zLCBwcm9kOworCWludDMyX3Qg ZXJyb3I7CisKKwljb25zID0gaW50Zi0+aW5fY29uczsKKwlwcm9kID0gaW50Zi0+aW5fcHJvZDsK KwllcnJvciA9IGludGYtPmluX2Vycm9yOworCXJldHVybiAoZXJyb3IgIT0gMCB8fAorCQlwdmNh bGxzX3F1ZXVlZChwcm9kLCBjb25zLAorCQkJICAgICAgIFhFTl9GTEVYX1JJTkdfU0laRShpbnRm LT5yaW5nX29yZGVyKSkpICE9IDA7Cit9CisKIHN0YXRpYyBpcnFyZXR1cm5fdCBwdmNhbGxzX2Zy b250X2V2ZW50X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogewogCXN0cnVjdCB4ZW5i dXNfZGV2aWNlICpkZXYgPSBkZXZfaWQ7CkBAIC00MTgsNiArNDMyLDk4IEBAIGludCBwdmNhbGxz X2Zyb250X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAog CXJldHVybiB0b3Rfc2VudDsKIH0KIAorc3RhdGljIGludCBfX3JlYWRfcmluZyhzdHJ1Y3QgcHZj YWxsc19kYXRhX2ludGYgKmludGYsCisJCSAgICAgICBzdHJ1Y3QgcHZjYWxsc19kYXRhICpkYXRh LAorCQkgICAgICAgc3RydWN0IGlvdl9pdGVyICptc2dfaXRlciwKKwkJICAgICAgIHNpemVfdCBs ZW4sIGludCBmbGFncykKK3sKKwlSSU5HX0lEWCBjb25zLCBwcm9kLCBzaXplLCBtYXNrZWRfcHJv ZCwgbWFza2VkX2NvbnM7CisJUklOR19JRFggYXJyYXlfc2l6ZSA9IFhFTl9GTEVYX1JJTkdfU0la RShpbnRmLT5yaW5nX29yZGVyKTsKKwlpbnQzMl90IGVycm9yOworCisJY29ucyA9IGludGYtPmlu X2NvbnM7CisJcHJvZCA9IGludGYtPmluX3Byb2Q7CisJZXJyb3IgPSBpbnRmLT5pbl9lcnJvcjsK KwkvKiBnZXQgcG9pbnRlcnMgYmVmb3JlIHJlYWRpbmcgZnJvbSB0aGUgcmluZyAqLworCXZpcnRf cm1iKCk7CisJaWYgKGVycm9yIDwgMCkKKwkJcmV0dXJuIGVycm9yOworCisJc2l6ZSA9IHB2Y2Fs bHNfcXVldWVkKHByb2QsIGNvbnMsIGFycmF5X3NpemUpOworCW1hc2tlZF9wcm9kID0gcHZjYWxs c19tYXNrKHByb2QsIGFycmF5X3NpemUpOworCW1hc2tlZF9jb25zID0gcHZjYWxsc19tYXNrKGNv bnMsIGFycmF5X3NpemUpOworCisJaWYgKHNpemUgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAo bGVuID4gc2l6ZSkKKwkJbGVuID0gc2l6ZTsKKworCWlmIChtYXNrZWRfcHJvZCA+IG1hc2tlZF9j b25zKSB7CisJCWNvcHlfdG9faXRlcihkYXRhLT5pbiArIG1hc2tlZF9jb25zLCBsZW4sIG1zZ19p dGVyKTsKKwl9IGVsc2UgeworCQlpZiAobGVuID4gKGFycmF5X3NpemUgLSBtYXNrZWRfY29ucykp IHsKKwkJCWNvcHlfdG9faXRlcihkYXRhLT5pbiArIG1hc2tlZF9jb25zLAorCQkJCSAgICAgYXJy YXlfc2l6ZSAtIG1hc2tlZF9jb25zLCBtc2dfaXRlcik7CisJCQljb3B5X3RvX2l0ZXIoZGF0YS0+ aW4sCisJCQkJICAgICBsZW4gLSAoYXJyYXlfc2l6ZSAtIG1hc2tlZF9jb25zKSwKKwkJCQkgICAg IG1zZ19pdGVyKTsKKwkJfSBlbHNlIHsKKwkJCWNvcHlfdG9faXRlcihkYXRhLT5pbiArIG1hc2tl ZF9jb25zLCBsZW4sIG1zZ19pdGVyKTsKKwkJfQorCX0KKwkvKiByZWFkIGRhdGEgZnJvbSB0aGUg cmluZyBiZWZvcmUgaW5jcmVhc2luZyB0aGUgaW5kZXggKi8KKwl2aXJ0X21iKCk7CisJaWYgKCEo ZmxhZ3MgJiBNU0dfUEVFSykpCisJCWludGYtPmluX2NvbnMgKz0gbGVuOworCisJcmV0dXJuIGxl bjsKK30KKworaW50IHB2Y2FsbHNfZnJvbnRfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz dHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sCisJCSAgICAgaW50IGZsYWdzKQoreworCXN0 cnVjdCBwdmNhbGxzX2JlZGF0YSAqYmVkYXRhOworCWludCByZXQgPSAtRUFHQUlOOworCXN0cnVj dCBzb2NrX21hcHBpbmcgKm1hcDsKKwlpbnQgY291bnQgPSAwOworCisJaWYgKCFwdmNhbGxzX2Zy b250X2RldikKKwkJcmV0dXJuIC1FTk9UQ09OTjsKKwliZWRhdGEgPSBkZXZfZ2V0X2RydmRhdGEo JnB2Y2FsbHNfZnJvbnRfZGV2LT5kZXYpOworCisJbWFwID0gKHN0cnVjdCBzb2NrX21hcHBpbmcg KikgUkVBRF9PTkNFKHNvY2stPnNrLT5za19zZW5kX2hlYWQpOworCWlmICghbWFwKQorCQlyZXR1 cm4gLUVOT1RTT0NLOworCisJaWYgKGZsYWdzICYgKE1TR19DTVNHX0NMT0VYRUN8TVNHX0VSUlFV RVVFfE1TR19PT0J8TVNHX1RSVU5DKSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJbXV0ZXhf bG9jaygmbWFwLT5hY3RpdmUuaW5fbXV0ZXgpOworCWlmIChsZW4gPiBYRU5fRkxFWF9SSU5HX1NJ WkUobWFwLT5hY3RpdmUucmluZy0+cmluZ19vcmRlcikpCisJCWxlbiA9IFhFTl9GTEVYX1JJTkdf U0laRShtYXAtPmFjdGl2ZS5yaW5nLT5yaW5nX29yZGVyKTsKKworCXdoaWxlICghKGZsYWdzICYg TVNHX0RPTlRXQUlUKSAmJiAhcHZjYWxsc19mcm9udF9yZWFkX3RvZG8obWFwKSkgeworCQlpZiAo Y291bnQgPCBQVkNBTExTX0ZST05UX01BWF9TUElOKQorCQkJY291bnQrKzsKKwkJZWxzZQorCQkJ d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKG1hcC0+YWN0aXZlLmluZmxpZ2h0X2Nvbm5fcmVxLAor CQkJCQkJIHB2Y2FsbHNfZnJvbnRfcmVhZF90b2RvKG1hcCkpOworCX0KKwlyZXQgPSBfX3JlYWRf cmluZyhtYXAtPmFjdGl2ZS5yaW5nLCAmbWFwLT5hY3RpdmUuZGF0YSwKKwkJCSAgJm1zZy0+bXNn X2l0ZXIsIGxlbiwgZmxhZ3MpOworCisJaWYgKHJldCA+IDApCisJCW5vdGlmeV9yZW1vdGVfdmlh X2lycShtYXAtPmFjdGl2ZS5pcnEpOworCWlmIChyZXQgPT0gMCkKKwkJcmV0ID0gLUVBR0FJTjsK KwlpZiAocmV0ID09IC1FTk9UQ09OTikKKwkJcmV0ID0gMDsKKworCW11dGV4X3VubG9jaygmbWFw LT5hY3RpdmUuaW5fbXV0ZXgpOworCXJldHVybiByZXQ7Cit9CisKIGludCBwdmNhbGxzX2Zyb250 X2JpbmQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICphZGRyLCBpbnQgYWRk cl9sZW4pCiB7CiAJc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7CmRpZmYgLS1naXQgYS9k cml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmggYi9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgK aW5kZXggZDkzN2MyNC4uZGUyNDA0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vcHZjYWxscy1m cm9udC5oCisrKyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaApAQCAtMTYsNSArMTYsOSBA QCBpbnQgcHZjYWxsc19mcm9udF9hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywKIGludCBwdmNh bGxzX2Zyb250X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywKIAkJCSAgc3RydWN0IG1zZ2hk ciAqbXNnLAogCQkJICBzaXplX3QgbGVuKTsKK2ludCBwdmNhbGxzX2Zyb250X3JlY3Ztc2coc3Ry dWN0IHNvY2tldCAqc29jaywKKwkJCSAgc3RydWN0IG1zZ2hkciAqbXNnLAorCQkJICBzaXplX3Qg bGVuLAorCQkJICBpbnQgZmxhZ3MpOwogCiAjZW5kaWYKLS0gCjEuOS4xCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==