From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 10/13] xen/pvcalls: implement recvmsg Date: Mon, 31 Jul 2017 15:57:32 -0700 Message-ID: <1501541855-7354-10-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 SW1wbGVtZW50IHJlY3Ztc2cgYnkgY29weWluZyBkYXRhIGZyb20gdGhlICJpbiIgcmluZy4gSWYg bm90IGVub3VnaCBkYXRhCmlzIGF2YWlsYWJsZSBhbmQgdGhlIHJlY3Ztc2cgY2FsbCBpcyBibG9j a2luZywgdGhlbiB3YWl0IG9uIHRoZQppbmZsaWdodF9jb25uX3JlcSB3YWl0cXVldWUuIFRha2Ug dGhlIGFjdGl2ZSBzb2NrZXQgaW5fbXV0ZXggc28gdGhhdApvbmx5IG9uZSBmdW5jdGlvbiBjYW4g YWNjZXNzIHRoZSByaW5nIGF0IGFueSBnaXZlbiB0aW1lLgoKSWYgbm8gZGF0YSBpcyBhdmFpbGFi bGUgb24gdGhlIHJpbmcsIHJhdGhlciB0aGFuIHJldHVybmluZyBpbW1lZGlhdGVseQpvciBzbGVl cC13YWl0aW5nLCBzcGluIGZvciB1cCB0byA1MDAwIGN5Y2xlcy4gVGhpcyBzbWFsbCBvcHRpbWl6 YXRpb24KdHVybnMgb3V0IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIGxhdGVuY3kgc2lnbmlm aWNhbnRseS4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub0BhcG9y ZXRvLmNvbT4KQ0M6IGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tCkNDOiBqZ3Jvc3NAc3VzZS5j b20KLS0tCiBkcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMgfCAxMDIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQu aCB8ICAgNCArKwogMiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYyBiL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJv bnQuYwppbmRleCAzNjlhY2RlLi42MzVhODNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9wdmNh bGxzLWZyb250LmMKKysrIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCkBAIC0xMDUsNiAr MTA1LDIwIEBAIHN0YXRpYyBpbnQgcHZjYWxsc19mcm9udF93cml0ZV90b2RvKHN0cnVjdCBzb2Nr X21hcHBpbmcgKm1hcCkKIAlyZXR1cm4gc2l6ZSAtIHB2Y2FsbHNfcXVldWVkKHByb2QsIGNvbnMs IHNpemUpOwogfQogCitzdGF0aWMgYm9vbCBwdmNhbGxzX2Zyb250X3JlYWRfdG9kbyhzdHJ1Y3Qg c29ja19tYXBwaW5nICptYXApCit7CisJc3RydWN0IHB2Y2FsbHNfZGF0YV9pbnRmICppbnRmID0g bWFwLT5hY3RpdmUucmluZzsKKwlSSU5HX0lEWCBjb25zLCBwcm9kOworCWludDMyX3QgZXJyb3I7 CisKKwljb25zID0gaW50Zi0+aW5fY29uczsKKwlwcm9kID0gaW50Zi0+aW5fcHJvZDsKKwllcnJv ciA9IGludGYtPmluX2Vycm9yOworCXJldHVybiAoZXJyb3IgIT0gMCB8fAorCQlwdmNhbGxzX3F1 ZXVlZChwcm9kLCBjb25zLAorCQkJICAgICAgIFhFTl9GTEVYX1JJTkdfU0laRShpbnRmLT5yaW5n X29yZGVyKSkgIT0gMCk7Cit9CisKIHN0YXRpYyBpcnFyZXR1cm5fdCBwdmNhbGxzX2Zyb250X2V2 ZW50X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogewogCXN0cnVjdCB4ZW5idXNfZGV2 aWNlICpkZXYgPSBkZXZfaWQ7CkBAIC00MzQsNiArNDQ4LDk0IEBAIGludCBwdmNhbGxzX2Zyb250 X3NlbmRtc2coc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbXNnLAogCXJldHVy biB0b3Rfc2VudDsKIH0KIAorc3RhdGljIGludCBfX3JlYWRfcmluZyhzdHJ1Y3QgcHZjYWxsc19k YXRhX2ludGYgKmludGYsCisJCSAgICAgICBzdHJ1Y3QgcHZjYWxsc19kYXRhICpkYXRhLAorCQkg ICAgICAgc3RydWN0IGlvdl9pdGVyICptc2dfaXRlciwKKwkJICAgICAgIHNpemVfdCBsZW4sIGlu dCBmbGFncykKK3sKKwlSSU5HX0lEWCBjb25zLCBwcm9kLCBzaXplLCBtYXNrZWRfcHJvZCwgbWFz a2VkX2NvbnM7CisJUklOR19JRFggYXJyYXlfc2l6ZSA9IFhFTl9GTEVYX1JJTkdfU0laRShpbnRm LT5yaW5nX29yZGVyKTsKKwlpbnQzMl90IGVycm9yOworCisJY29ucyA9IGludGYtPmluX2NvbnM7 CisJcHJvZCA9IGludGYtPmluX3Byb2Q7CisJZXJyb3IgPSBpbnRmLT5pbl9lcnJvcjsKKwkvKiBn ZXQgcG9pbnRlcnMgYmVmb3JlIHJlYWRpbmcgZnJvbSB0aGUgcmluZyAqLworCXZpcnRfcm1iKCk7 CisJaWYgKGVycm9yIDwgMCkKKwkJcmV0dXJuIGVycm9yOworCisJc2l6ZSA9IHB2Y2FsbHNfcXVl dWVkKHByb2QsIGNvbnMsIGFycmF5X3NpemUpOworCW1hc2tlZF9wcm9kID0gcHZjYWxsc19tYXNr KHByb2QsIGFycmF5X3NpemUpOworCW1hc2tlZF9jb25zID0gcHZjYWxsc19tYXNrKGNvbnMsIGFy cmF5X3NpemUpOworCisJaWYgKHNpemUgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAobGVuID4g c2l6ZSkKKwkJbGVuID0gc2l6ZTsKKworCWlmIChtYXNrZWRfcHJvZCA+IG1hc2tlZF9jb25zKSB7 CisJCWNvcHlfdG9faXRlcihkYXRhLT5pbiArIG1hc2tlZF9jb25zLCBsZW4sIG1zZ19pdGVyKTsK Kwl9IGVsc2UgeworCQlpZiAobGVuID4gKGFycmF5X3NpemUgLSBtYXNrZWRfY29ucykpIHsKKwkJ CWNvcHlfdG9faXRlcihkYXRhLT5pbiArIG1hc2tlZF9jb25zLAorCQkJCSAgICAgYXJyYXlfc2l6 ZSAtIG1hc2tlZF9jb25zLCBtc2dfaXRlcik7CisJCQljb3B5X3RvX2l0ZXIoZGF0YS0+aW4sCisJ CQkJICAgICBsZW4gLSAoYXJyYXlfc2l6ZSAtIG1hc2tlZF9jb25zKSwKKwkJCQkgICAgIG1zZ19p dGVyKTsKKwkJfSBlbHNlIHsKKwkJCWNvcHlfdG9faXRlcihkYXRhLT5pbiArIG1hc2tlZF9jb25z LCBsZW4sIG1zZ19pdGVyKTsKKwkJfQorCX0KKwkvKiByZWFkIGRhdGEgZnJvbSB0aGUgcmluZyBi ZWZvcmUgaW5jcmVhc2luZyB0aGUgaW5kZXggKi8KKwl2aXJ0X21iKCk7CisJaWYgKCEoZmxhZ3Mg JiBNU0dfUEVFSykpCisJCWludGYtPmluX2NvbnMgKz0gbGVuOworCisJcmV0dXJuIGxlbjsKK30K KworaW50IHB2Y2FsbHNfZnJvbnRfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg bXNnaGRyICptc2csIHNpemVfdCBsZW4sCisJCSAgICAgaW50IGZsYWdzKQoreworCXN0cnVjdCBw dmNhbGxzX2JlZGF0YSAqYmVkYXRhOworCWludCByZXQgPSAtRUFHQUlOOworCXN0cnVjdCBzb2Nr X21hcHBpbmcgKm1hcDsKKworCWlmICghcHZjYWxsc19mcm9udF9kZXYpCisJCXJldHVybiAtRU5P VENPTk47CisJYmVkYXRhID0gZGV2X2dldF9kcnZkYXRhKCZwdmNhbGxzX2Zyb250X2Rldi0+ZGV2 KTsKKworCW1hcCA9IChzdHJ1Y3Qgc29ja19tYXBwaW5nICopIFJFQURfT05DRShzb2NrLT5zay0+ c2tfc2VuZF9oZWFkKTsKKwlpZiAoIW1hcCkKKwkJcmV0dXJuIC1FTk9UU09DSzsKKworCWlmIChm bGFncyAmIChNU0dfQ01TR19DTE9FWEVDfE1TR19FUlJRVUVVRXxNU0dfT09CfE1TR19UUlVOQykp CisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCW11dGV4X2xvY2soJm1hcC0+YWN0aXZlLmluX211 dGV4KTsKKwlpZiAobGVuID4gWEVOX0ZMRVhfUklOR19TSVpFKG1hcC0+YWN0aXZlLnJpbmctPnJp bmdfb3JkZXIpKQorCQlsZW4gPSBYRU5fRkxFWF9SSU5HX1NJWkUobWFwLT5hY3RpdmUucmluZy0+ cmluZ19vcmRlcik7CisKKwl3aGlsZSAoIShmbGFncyAmIE1TR19ET05UV0FJVCkgJiYgIXB2Y2Fs bHNfZnJvbnRfcmVhZF90b2RvKG1hcCkpIHsKKwkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKG1h cC0+YWN0aXZlLmluZmxpZ2h0X2Nvbm5fcmVxLAorCQkJCQkgcHZjYWxsc19mcm9udF9yZWFkX3Rv ZG8obWFwKSk7CisJfQorCXJldCA9IF9fcmVhZF9yaW5nKG1hcC0+YWN0aXZlLnJpbmcsICZtYXAt PmFjdGl2ZS5kYXRhLAorCQkJICAmbXNnLT5tc2dfaXRlciwgbGVuLCBmbGFncyk7CisKKwlpZiAo cmV0ID4gMCkKKwkJbm90aWZ5X3JlbW90ZV92aWFfaXJxKG1hcC0+YWN0aXZlLmlycSk7CisJaWYg KHJldCA9PSAwKQorCQlyZXQgPSAtRUFHQUlOOworCWlmIChyZXQgPT0gLUVOT1RDT05OKQorCQly ZXQgPSAwOworCisJbXV0ZXhfdW5sb2NrKCZtYXAtPmFjdGl2ZS5pbl9tdXRleCk7CisJcmV0dXJu IHJldDsKK30KKwogaW50IHB2Y2FsbHNfZnJvbnRfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRyX2xlbikKIHsKIAlzdHJ1Y3QgcHZjYWxsc19i ZWRhdGEgKmJlZGF0YTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaCBi L2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaAppbmRleCBkOTM3YzI0Li5kZTI0MDQxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKKysrIGIvZHJpdmVycy94ZW4vcHZj YWxscy1mcm9udC5oCkBAIC0xNiw1ICsxNiw5IEBAIGludCBwdmNhbGxzX2Zyb250X2FjY2VwdChz dHJ1Y3Qgc29ja2V0ICpzb2NrLAogaW50IHB2Y2FsbHNfZnJvbnRfc2VuZG1zZyhzdHJ1Y3Qgc29j a2V0ICpzb2NrLAogCQkJICBzdHJ1Y3QgbXNnaGRyICptc2csCiAJCQkgIHNpemVfdCBsZW4pOwor aW50IHB2Y2FsbHNfZnJvbnRfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLAorCQkJICBzdHJ1 Y3QgbXNnaGRyICptc2csCisJCQkgIHNpemVfdCBsZW4sCisJCQkgIGludCBmbGFncyk7CiAKICNl bmRpZgotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK