From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v3 05/13] xen/pvcalls: implement connect command Date: Mon, 31 Jul 2017 15:57:27 -0700 Message-ID: <1501541855-7354-5-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 U2VuZCBQVkNBTExTX0NPTk5FQ1QgdG8gdGhlIGJhY2tlbmQuIEFsbG9jYXRlIGEgbmV3IHJpbmcg YW5kIGV2dGNobiBmb3IKdGhlIGFjdGl2ZSBzb2NrZXQuCgpJbnRyb2R1Y2UgZmllbGRzIGluIHN0 cnVjdCBzb2NrX21hcHBpbmcgdG8ga2VlcCB0cmFjayBvZiBhY3RpdmUgc29ja2V0cy4KSW50cm9k dWNlIGEgd2FpdHF1ZXVlIHRvIGFsbG93IHRoZSBmcm9udGVuZCB0byB3YWl0IG9uIGRhdGEgY29t aW5nIGZyb20KdGhlIGJhY2tlbmQgb24gdGhlIGFjdGl2ZSBzb2NrZXQgKHJlY3Ztc2cgY29tbWFu ZCkuCgpUd28gbXV0ZXhlcyAob25lIG9mIHJlYWRzIGFuZCBvbmUgZm9yIHdyaXRlcykgd2lsbCBi ZSB1c2VkIHRvIHByb3RlY3QKdGhlIGFjdGl2ZSBzb2NrZXQgaW4gYW5kIG91dCByaW5ncyBmcm9t IGNvbmN1cnJlbnQgYWNjZXNzZXMuCgpTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkg PHN0ZWZhbm9AYXBvcmV0by5jb20+CkNDOiBib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbQpDQzog amdyb3NzQHN1c2UuY29tCi0tLQogZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jIHwgMTQ2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3hlbi9w dmNhbGxzLWZyb250LmggfCAgIDIgKwogMiBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygr KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYyBiL2RyaXZlcnMveGVu L3B2Y2FsbHMtZnJvbnQuYwppbmRleCA3YzRhN2NiLi4zNzliOGZiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMKKysrIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5j CkBAIC0xMyw2ICsxMywxMCBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNp bmNsdWRlIDxsaW51eC9uZXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zb2NrZXQuaD4KKworI2luY2x1 ZGUgPG5ldC9zb2NrLmg+CiAKICNpbmNsdWRlIDx4ZW4vZXZlbnRzLmg+CiAjaW5jbHVkZSA8eGVu L2dyYW50X3RhYmxlLmg+CkBAIC00NCw2ICs0OCwxOCBAQCBzdHJ1Y3Qgc29ja19tYXBwaW5nIHsK IAlib29sIGFjdGl2ZV9zb2NrZXQ7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCXN0cnVjdCBz b2NrZXQgKnNvY2s7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJaW50IGlycTsKKwkJCWdyYW50 X3JlZl90IHJlZjsKKwkJCXN0cnVjdCBwdmNhbGxzX2RhdGFfaW50ZiAqcmluZzsKKwkJCXN0cnVj dCBwdmNhbGxzX2RhdGEgZGF0YTsKKwkJCXN0cnVjdCBtdXRleCBpbl9tdXRleDsKKwkJCXN0cnVj dCBtdXRleCBvdXRfbXV0ZXg7CisKKwkJCXdhaXRfcXVldWVfaGVhZF90IGluZmxpZ2h0X2Nvbm5f cmVxOworCQl9IGFjdGl2ZTsKKwl9OwogfTsKIAogc3RhdGljIGlubGluZSBpbnQgZ2V0X3JlcXVl c3Qoc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGEsIGludCAqcmVxX2lkKQpAQCAtOTcsNiAr MTEzLDE4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBwdmNhbGxzX2Zyb250X2V2ZW50X2hhbmRsZXIo aW50IGlycSwgdm9pZCAqZGV2X2lkKQogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAorc3RhdGlj IGlycXJldHVybl90IHB2Y2FsbHNfZnJvbnRfY29ubl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKnNv Y2tfbWFwKQoreworCXN0cnVjdCBzb2NrX21hcHBpbmcgKm1hcCA9IHNvY2tfbWFwOworCisJaWYg KG1hcCA9PSBOVUxMKQorCQlyZXR1cm4gSVJRX0hBTkRMRUQ7CisKKwl3YWtlX3VwX2ludGVycnVw dGlibGUoJm1hcC0+YWN0aXZlLmluZmxpZ2h0X2Nvbm5fcmVxKTsKKworCXJldHVybiBJUlFfSEFO RExFRDsKK30KKwogaW50IHB2Y2FsbHNfZnJvbnRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2sp CiB7CiAJc3RydWN0IHB2Y2FsbHNfYmVkYXRhICpiZWRhdGE7CkBAIC0xNjIsNiArMTkwLDEyNCBA QCBpbnQgcHZjYWxsc19mcm9udF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaykKIAlyZXR1cm4g cmV0OwogfQogCitzdGF0aWMgaW50IGNyZWF0ZV9hY3RpdmUoc3RydWN0IHNvY2tfbWFwcGluZyAq bWFwLCBpbnQgKmV2dGNobikKK3sKKwl2b2lkICpieXRlczsKKwlpbnQgcmV0ID0gLUVOT01FTSwg aXJxID0gLTEsIGk7CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZtYXAtPmFjdGl2ZS5pbmZsaWdo dF9jb25uX3JlcSk7CisKKwltYXAtPmFjdGl2ZS5yaW5nID0gKHN0cnVjdCBwdmNhbGxzX2RhdGFf aW50ZiAqKQorCQlfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOworCWlm IChtYXAtPmFjdGl2ZS5yaW5nID09IE5VTEwpCisJCWdvdG8gb3V0X2Vycm9yOworCW1lbXNldCht YXAtPmFjdGl2ZS5yaW5nLCAwLCBYRU5fUEFHRV9TSVpFKTsKKwltYXAtPmFjdGl2ZS5yaW5nLT5y aW5nX29yZGVyID0gUFZDQUxMU19SSU5HX09SREVSOworCWJ5dGVzID0gKHZvaWQgKilfX2dldF9m cmVlX3BhZ2VzKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPLAorCQkJCQltYXAtPmFjdGl2ZS5yaW5n LT5yaW5nX29yZGVyKTsKKwlpZiAoYnl0ZXMgPT0gTlVMTCkKKwkJZ290byBvdXRfZXJyb3I7CisJ Zm9yIChpID0gMDsgaSA8ICgxIDw8IG1hcC0+YWN0aXZlLnJpbmctPnJpbmdfb3JkZXIpOyBpKysp CisJCW1hcC0+YWN0aXZlLnJpbmctPnJlZltpXSA9IGdudHRhYl9ncmFudF9mb3JlaWduX2FjY2Vz cygKKwkJCXB2Y2FsbHNfZnJvbnRfZGV2LT5vdGhlcmVuZF9pZCwKKwkJCXBmbl90b19nZm4odmly dF90b19wZm4oYnl0ZXMpICsgaSksIDApOworCisJbWFwLT5hY3RpdmUucmVmID0gZ250dGFiX2dy YW50X2ZvcmVpZ25fYWNjZXNzKAorCQlwdmNhbGxzX2Zyb250X2Rldi0+b3RoZXJlbmRfaWQsCisJ CXBmbl90b19nZm4odmlydF90b19wZm4oKHZvaWQgKiltYXAtPmFjdGl2ZS5yaW5nKSksIDApOwor CisJbWFwLT5hY3RpdmUuZGF0YS5pbiA9IGJ5dGVzOworCW1hcC0+YWN0aXZlLmRhdGEub3V0ID0g Ynl0ZXMgKworCQlYRU5fRkxFWF9SSU5HX1NJWkUobWFwLT5hY3RpdmUucmluZy0+cmluZ19vcmRl cik7CisKKwlyZXQgPSB4ZW5idXNfYWxsb2NfZXZ0Y2huKHB2Y2FsbHNfZnJvbnRfZGV2LCBldnRj aG4pOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2Vycm9yOworCWlycSA9IGJpbmRfZXZ0Y2huX3Rv X2lycWhhbmRsZXIoKmV2dGNobiwgcHZjYWxsc19mcm9udF9jb25uX2hhbmRsZXIsCisJCQkJCTAs ICJwdmNhbGxzLWZyb250ZW5kIiwgbWFwKTsKKwlpZiAoaXJxIDwgMCkgeworCQlyZXQgPSBpcnE7 CisJCWdvdG8gb3V0X2Vycm9yOworCX0KKworCW1hcC0+YWN0aXZlLmlycSA9IGlycTsKKwltYXAt PmFjdGl2ZV9zb2NrZXQgPSB0cnVlOworCW11dGV4X2luaXQoJm1hcC0+YWN0aXZlLmluX211dGV4 KTsKKwltdXRleF9pbml0KCZtYXAtPmFjdGl2ZS5vdXRfbXV0ZXgpOworCisJcmV0dXJuIDA7CisK K291dF9lcnJvcjoKKwlpZiAoaXJxID49IDApCisJCXVuYmluZF9mcm9tX2lycWhhbmRsZXIoaXJx LCBtYXApOworCWVsc2UgaWYgKCpldnRjaG4gPj0gMCkKKwkJeGVuYnVzX2ZyZWVfZXZ0Y2huKHB2 Y2FsbHNfZnJvbnRfZGV2LCAqZXZ0Y2huKTsKKwlrZnJlZShtYXAtPmFjdGl2ZS5kYXRhLmluKTsK KwlrZnJlZShtYXAtPmFjdGl2ZS5yaW5nKTsKKwlrZnJlZShtYXApOworCXJldHVybiByZXQ7Cit9 CisKK2ludCBwdmNhbGxzX2Zyb250X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0 IHNvY2thZGRyICphZGRyLAorCQkJCWludCBhZGRyX2xlbiwgaW50IGZsYWdzKQoreworCXN0cnVj dCBwdmNhbGxzX2JlZGF0YSAqYmVkYXRhOworCXN0cnVjdCBzb2NrX21hcHBpbmcgKm1hcCA9IE5V TEw7CisJc3RydWN0IHhlbl9wdmNhbGxzX3JlcXVlc3QgKnJlcTsKKwlpbnQgbm90aWZ5LCByZXFf aWQsIHJldCwgZXZ0Y2huOworCisJaWYgKCFwdmNhbGxzX2Zyb250X2RldikKKwkJcmV0dXJuIC1F TkVUVU5SRUFDSDsKKwlpZiAoYWRkci0+c2FfZmFtaWx5ICE9IEFGX0lORVQgfHwgc29jay0+dHlw ZSAhPSBTT0NLX1NUUkVBTSkKKwkJcmV0dXJuIC1FTk9UU1VQUDsKKworCWJlZGF0YSA9IGRldl9n ZXRfZHJ2ZGF0YSgmcHZjYWxsc19mcm9udF9kZXYtPmRldik7CisKKwltYXAgPSAoc3RydWN0IHNv Y2tfbWFwcGluZyAqKSBSRUFEX09OQ0Uoc29jay0+c2stPnNrX3NlbmRfaGVhZCk7CisJaWYgKCFt YXApCisJICAgIHJldHVybiAtRUlOVkFMOworCisJc3Bpbl9sb2NrKCZiZWRhdGEtPnB2Y2FsbHNz X2xvY2spOworCXJldCA9IGdldF9yZXF1ZXN0KGJlZGF0YSwgJnJlcV9pZCk7CisJaWYgKHJldCA8 IDApIHsKKwkJc3Bpbl91bmxvY2soJmJlZGF0YS0+cHZjYWxsc3NfbG9jayk7CisJCXJldHVybiBy ZXQ7CisJfQorCXJldCA9IGNyZWF0ZV9hY3RpdmUobWFwLCAmZXZ0Y2huKTsKKwlpZiAocmV0IDwg MCkgeworCQlzcGluX3VubG9jaygmYmVkYXRhLT5wdmNhbGxzc19sb2NrKTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZiZWRhdGEtPnJpbmcsIHJlcV9pZCk7 CisJcmVxLT5yZXFfaWQgPSByZXFfaWQ7CisJcmVxLT5jbWQgPSBQVkNBTExTX0NPTk5FQ1Q7CisJ cmVxLT51LmNvbm5lY3QuaWQgPSAodWludDY0X3QpbWFwOworCW1lbWNweShyZXEtPnUuY29ubmVj dC5hZGRyLCBhZGRyLCBzaXplb2YoKmFkZHIpKTsKKwlyZXEtPnUuY29ubmVjdC5sZW4gPSBhZGRy X2xlbjsKKwlyZXEtPnUuY29ubmVjdC5mbGFncyA9IGZsYWdzOworCXJlcS0+dS5jb25uZWN0LnJl ZiA9IG1hcC0+YWN0aXZlLnJlZjsKKwlyZXEtPnUuY29ubmVjdC5ldnRjaG4gPSBldnRjaG47CisJ CisJbWFwLT5zb2NrID0gc29jazsKKworCWJlZGF0YS0+cmluZy5yZXFfcHJvZF9wdnQrKzsKKwlS SU5HX1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElGWSgmYmVkYXRhLT5yaW5nLCBub3RpZnkp OworCXNwaW5fdW5sb2NrKCZiZWRhdGEtPnB2Y2FsbHNzX2xvY2spOworCisJaWYgKG5vdGlmeSkK KwkJbm90aWZ5X3JlbW90ZV92aWFfaXJxKGJlZGF0YS0+aXJxKTsKKworCXdhaXRfZXZlbnQoYmVk YXRhLT5pbmZsaWdodF9yZXEsCisJCSAgIFJFQURfT05DRShiZWRhdGEtPnJzcFtyZXFfaWRdLnJl cV9pZCkgPT0gcmVxX2lkKTsKKworCXJldCA9IGJlZGF0YS0+cnNwW3JlcV9pZF0ucmV0OworCS8q IHJlYWQgcmV0LCB0aGVuIHNldCB0aGlzIHJzcCBzbG90IHRvIGJlIHJldXNlZCAqLworCXNtcF9t YigpOworCVdSSVRFX09OQ0UoYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXFfaWQsIFBWQ0FMTFNfSU5W QUxJRF9JRCk7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCB4ZW5idXNf ZGV2aWNlX2lkIHB2Y2FsbHNfZnJvbnRfaWRzW10gPSB7CiAJeyAicHZjYWxscyIgfSwKIAl7ICIi IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaCBiL2RyaXZlcnMveGVu L3B2Y2FsbHMtZnJvbnQuaAppbmRleCBiN2RhYmVkLi42M2IwNDE3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3hlbi9wdmNhbGxzLWZyb250LmgKKysrIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5o CkBAIC00LDUgKzQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L25ldC5oPgogCiBpbnQgcHZjYWxsc19m cm9udF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jayk7CitpbnQgcHZjYWxsc19mcm9udF9jb25u ZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkciwKKwkJCSAgaW50 IGFkZHJfbGVuLCBpbnQgZmxhZ3MpOwogCiAjZW5kaWYKLS0gCjEuOS4xCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==