From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH v1 04/13] xen/pvcalls: implement connect command Date: Fri, 21 Jul 2017 17:11:54 -0700 Message-ID: <1500682323-25940-4-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 U2VuZCBQVkNBTExTX0NPTk5FQ1QgdG8gdGhlIGJhY2tlbmQuIEFsbG9jYXRlIGEgbmV3IHJpbmcg YW5kIGV2dGNobiBmb3IKdGhlIGFjdGl2ZSBzb2NrZXQuCgpJbnRyb2R1Y2UgYSBkYXRhIHN0cnVj dHVyZSB0byBrZWVwIHRyYWNrIG9mIHNvY2tldHMuIEludHJvZHVjZSBhCndhaXRxdWV1ZSB0byBh bGxvdyB0aGUgZnJvbnRlbmQgdG8gd2FpdCBvbiBkYXRhIGNvbWluZyBmcm9tIHRoZSBiYWNrZW5k Cm9uIHRoZSBhY3RpdmUgc29ja2V0IChyZWN2bXNnIGNvbW1hbmQpLgoKVHdvIG11dGV4ZXMgKG9u ZSBvZiByZWFkcyBhbmQgb25lIGZvciB3cml0ZXMpIHdpbGwgYmUgdXNlZCB0byBwcm90ZWN0CnRo ZSBhY3RpdmUgc29ja2V0IGluIGFuZCBvdXQgcmluZ3MgZnJvbSBjb25jdXJyZW50IGFjY2Vzc2Vz LgoKc29jay0+c2stPnNrX3NlbmRfaGVhZCBpcyBub3QgdXNlZCBmb3IgaXAgc29ja2V0czogcmV1 c2UgdGhlIGZpZWxkIHRvCnN0b3JlIGEgcG9pbnRlciB0byB0aGUgc3RydWN0IHNvY2tfbWFwcGlu ZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBzb2NrZXQuClRoaXMgd2F5LCB3ZSBjYW4gZWFzaWx5IGdl dCB0aGUgc3RydWN0IHNvY2tfbWFwcGluZyBmcm9tIHRoZSBzdHJ1Y3QKc29ja2V0LgoKQ29udmVy dCB0aGUgc3RydWN0IHNvY2tldCBwb2ludGVyIGludG8gYW4gdWludDY0X3QgYW5kIHVzZSBpdCBh cyBpZCBmb3IKdGhlIG5ldyBzb2NrZXQgdG8gcGFzcyB0byB0aGUgYmFja2VuZC4KClNpZ25lZC1v ZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub0BhcG9yZXRvLmNvbT4KQ0M6IGJvcmlz Lm9zdHJvdnNreUBvcmFjbGUuY29tCkNDOiBqZ3Jvc3NAc3VzZS5jb20KLS0tCiBkcml2ZXJzL3hl bi9wdmNhbGxzLWZyb250LmMgfCAxNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGRyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaCB8ICAgMiArCiAyIGZpbGVz IGNoYW5nZWQsIDE1NSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHZj YWxscy1mcm9udC5jIGIvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5jCmluZGV4IDc5MzNjNzMu LjBkMzA1ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuYworKysgYi9k cml2ZXJzL3hlbi9wdmNhbGxzLWZyb250LmMKQEAgLTEzLDYgKzEzLDggQEAKICAqLwogCiAjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbmV0Lmg+CisjaW5jbHVkZSA8 bGludXgvc29ja2V0Lmg+CiAKICNpbmNsdWRlIDx4ZW4vZXZlbnRzLmg+CiAjaW5jbHVkZSA8eGVu L2dyYW50X3RhYmxlLmg+CkBAIC0yMCw2ICsyMiw4IEBACiAjaW5jbHVkZSA8eGVuL3hlbmJ1cy5o PgogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvaW8vcHZjYWxscy5oPgogCisjaW5jbHVkZSA8bmV0 L3NvY2suaD4KKwogI2RlZmluZSBQVkNBTExTX0lOVkFMSURfSUQgKFVJTlRfTUFYKQogI2RlZmlu ZSBSSU5HX09SREVSIFhFTkJVU19NQVhfUklOR19HUkFOVF9PUkRFUgogI2RlZmluZSBQVkNBTExT X05SX1JFUV9QRVJfUklORyBfX0NPTlNUX1JJTkdfU0laRSh4ZW5fcHZjYWxscywgWEVOX1BBR0Vf U0laRSkKQEAgLTM4LDYgKzQyLDI0IEBAIHN0cnVjdCBwdmNhbGxzX2JlZGF0YSB7CiB9Owogc3Ry dWN0IHhlbmJ1c19kZXZpY2UgKnB2Y2FsbHNfZnJvbnRfZGV2OwogCitzdHJ1Y3Qgc29ja19tYXBw aW5nIHsKKwlib29sIGFjdGl2ZV9zb2NrZXQ7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0 cnVjdCBzb2NrZXQgKnNvY2s7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJaW50IGlycTsKKwkJ CWdyYW50X3JlZl90IHJlZjsKKwkJCXN0cnVjdCBwdmNhbGxzX2RhdGFfaW50ZiAqcmluZzsKKwkJ CXN0cnVjdCBwdmNhbGxzX2RhdGEgZGF0YTsKKwkJCXN0cnVjdCBtdXRleCBpbl9tdXRleDsKKwkJ CXN0cnVjdCBtdXRleCBvdXRfbXV0ZXg7CisKKwkJCXdhaXRfcXVldWVfaGVhZF90IGluZmxpZ2h0 X2Nvbm5fcmVxOworCQl9IGFjdGl2ZTsKKwl9OworfTsKKwogc3RhdGljIGlycXJldHVybl90IHB2 Y2FsbHNfZnJvbnRfZXZlbnRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiB7CiAJc3Ry dWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IGRldl9pZDsKQEAgLTgwLDYgKzEwMiwxOCBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgcHZjYWxsc19mcm9udF9ldmVudF9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmRldl9pZCkKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKK3N0YXRpYyBpcnFyZXR1cm5fdCBw dmNhbGxzX2Zyb250X2Nvbm5faGFuZGxlcihpbnQgaXJxLCB2b2lkICpzb2NrX21hcCkKK3sKKwlz dHJ1Y3Qgc29ja19tYXBwaW5nICptYXAgPSBzb2NrX21hcDsKKworCWlmIChtYXAgPT0gTlVMTCkK KwkJcmV0dXJuIElSUV9IQU5ETEVEOworCisJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZtYXAtPmFj dGl2ZS5pbmZsaWdodF9jb25uX3JlcSk7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKIGlu dCBwdmNhbGxzX2Zyb250X3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKQogewogCXN0cnVjdCBw dmNhbGxzX2JlZGF0YSAqYmVkYXRhOwpAQCAtMTM0LDYgKzE2OCwxMjUgQEAgaW50IHB2Y2FsbHNf ZnJvbnRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2spCiAJcmV0dXJuIHJldDsKIH0KIAorc3Rh dGljIHN0cnVjdCBzb2NrX21hcHBpbmcgKmNyZWF0ZV9hY3RpdmUoaW50ICpldnRjaG4pCit7CisJ c3RydWN0IHNvY2tfbWFwcGluZyAqbWFwID0gTlVMTDsKKwl2b2lkICpieXRlczsKKwlpbnQgcmV0 LCBpcnEgPSAtMSwgaTsKKworCW1hcCA9IGt6YWxsb2Moc2l6ZW9mKCptYXApLCBHRlBfS0VSTkVM KTsKKwlpZiAobWFwID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJaW5pdF93YWl0cXVldWVf aGVhZCgmbWFwLT5hY3RpdmUuaW5mbGlnaHRfY29ubl9yZXEpOworCisJbWFwLT5hY3RpdmUucmlu ZyA9IChzdHJ1Y3QgcHZjYWxsc19kYXRhX2ludGYgKikKKwkJX19nZXRfZnJlZV9wYWdlKEdGUF9L RVJORUwgfCBfX0dGUF9aRVJPKTsKKwlpZiAobWFwLT5hY3RpdmUucmluZyA9PSBOVUxMKQorCQln b3RvIG91dF9lcnJvcjsKKwltZW1zZXQobWFwLT5hY3RpdmUucmluZywgMCwgWEVOX1BBR0VfU0la RSk7CisJbWFwLT5hY3RpdmUucmluZy0+cmluZ19vcmRlciA9IFJJTkdfT1JERVI7CisJYnl0ZXMg PSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCisJCQkJ CW1hcC0+YWN0aXZlLnJpbmctPnJpbmdfb3JkZXIpOworCWlmIChieXRlcyA9PSBOVUxMKQorCQln b3RvIG91dF9lcnJvcjsKKwlmb3IgKGkgPSAwOyBpIDwgKDEgPDwgbWFwLT5hY3RpdmUucmluZy0+ cmluZ19vcmRlcik7IGkrKykKKwkJbWFwLT5hY3RpdmUucmluZy0+cmVmW2ldID0gZ250dGFiX2dy YW50X2ZvcmVpZ25fYWNjZXNzKAorCQkJcHZjYWxsc19mcm9udF9kZXYtPm90aGVyZW5kX2lkLAor CQkJcGZuX3RvX2dmbih2aXJ0X3RvX3BmbihieXRlcykgKyBpKSwgMCk7CisKKwltYXAtPmFjdGl2 ZS5yZWYgPSBnbnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nlc3MoCisJCXB2Y2FsbHNfZnJvbnRfZGV2 LT5vdGhlcmVuZF9pZCwKKwkJcGZuX3RvX2dmbih2aXJ0X3RvX3Bmbigodm9pZCAqKW1hcC0+YWN0 aXZlLnJpbmcpKSwgMCk7CisKKwlyZXQgPSB4ZW5idXNfYWxsb2NfZXZ0Y2huKHB2Y2FsbHNfZnJv bnRfZGV2LCBldnRjaG4pOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2Vycm9yOworCW1hcC0+YWN0 aXZlLmRhdGEuaW4gPSBieXRlczsKKwltYXAtPmFjdGl2ZS5kYXRhLm91dCA9IGJ5dGVzICsKKwkJ WEVOX0ZMRVhfUklOR19TSVpFKG1hcC0+YWN0aXZlLnJpbmctPnJpbmdfb3JkZXIpOworCWlycSA9 IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIoKmV2dGNobiwgcHZjYWxsc19mcm9udF9jb25uX2hh bmRsZXIsCisJCQkJCTAsICJwdmNhbGxzLWZyb250ZW5kIiwgbWFwKTsKKwlpZiAoaXJxIDwgMCkK KwkJZ290byBvdXRfZXJyb3I7CisKKwltYXAtPmFjdGl2ZS5pcnEgPSBpcnE7CisJbWFwLT5hY3Rp dmVfc29ja2V0ID0gdHJ1ZTsKKwltdXRleF9pbml0KCZtYXAtPmFjdGl2ZS5pbl9tdXRleCk7CisJ bXV0ZXhfaW5pdCgmbWFwLT5hY3RpdmUub3V0X211dGV4KTsKKworCXJldHVybiBtYXA7CisKK291 dF9lcnJvcjoKKwlpZiAoaXJxID49IDApCisJCXVuYmluZF9mcm9tX2lycWhhbmRsZXIoaXJxLCBt YXApOworCWVsc2UgaWYgKCpldnRjaG4gPj0gMCkKKwkJeGVuYnVzX2ZyZWVfZXZ0Y2huKHB2Y2Fs bHNfZnJvbnRfZGV2LCAqZXZ0Y2huKTsKKwlrZnJlZShtYXAtPmFjdGl2ZS5kYXRhLmluKTsKKwlr ZnJlZShtYXAtPmFjdGl2ZS5yaW5nKTsKKwlrZnJlZShtYXApOworCXJldHVybiBOVUxMOworfQor CitpbnQgcHZjYWxsc19mcm9udF9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBz b2NrYWRkciAqYWRkciwKKwkJCQlpbnQgYWRkcl9sZW4sIGludCBmbGFncykKK3sKKwlzdHJ1Y3Qg cHZjYWxsc19iZWRhdGEgKmJlZGF0YTsKKwlzdHJ1Y3Qgc29ja19tYXBwaW5nICptYXAgPSBOVUxM OworCXN0cnVjdCB4ZW5fcHZjYWxsc19yZXF1ZXN0ICpyZXE7CisJaW50IG5vdGlmeSwgcmVxX2lk LCByZXQsIGV2dGNobjsKKworCWlmICghcHZjYWxsc19mcm9udF9kZXYpCisJCXJldHVybiAtRU5F VFVOUkVBQ0g7CisJaWYgKGFkZHItPnNhX2ZhbWlseSAhPSBBRl9JTkVUIHx8IHNvY2stPnR5cGUg IT0gU09DS19TVFJFQU0pCisJCXJldHVybiAtRU5PVFNVUFA7CisKKwliZWRhdGEgPSBkZXZfZ2V0 X2RydmRhdGEoJnB2Y2FsbHNfZnJvbnRfZGV2LT5kZXYpOworCisJc3Bpbl9sb2NrKCZiZWRhdGEt PnB2Y2FsbHNzX2xvY2spOworCXJlcV9pZCA9IGJlZGF0YS0+cmluZy5yZXFfcHJvZF9wdnQgJiAo UklOR19TSVpFKCZiZWRhdGEtPnJpbmcpIC0gMSk7CisJQlVHX09OKHJlcV9pZCA+PSBQVkNBTExT X05SX1JFUV9QRVJfUklORyk7CisJaWYgKFJJTkdfRlVMTCgmYmVkYXRhLT5yaW5nKSB8fAorCSAg ICBSRUFEX09OQ0UoYmVkYXRhLT5yc3BbcmVxX2lkXS5yZXFfaWQpICE9IFBWQ0FMTFNfSU5WQUxJ RF9JRCkgeworCQlzcGluX3VubG9jaygmYmVkYXRhLT5wdmNhbGxzc19sb2NrKTsKKwkJcmV0dXJu IC1FQUdBSU47CisJfQorCisJbWFwID0gY3JlYXRlX2FjdGl2ZSgmZXZ0Y2huKTsKKwlpZiAoIW1h cCkKKwkgICAgcmV0dXJuIC1FTk9NRU07CisKKwlyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZiZWRh dGEtPnJpbmcsIHJlcV9pZCk7CisJcmVxLT5yZXFfaWQgPSByZXFfaWQ7CisJcmVxLT5jbWQgPSBQ VkNBTExTX0NPTk5FQ1Q7CisJcmVxLT51LmNvbm5lY3QuaWQgPSAodWludDY0X3Qpc29jazsKKwlt ZW1jcHkocmVxLT51LmNvbm5lY3QuYWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSk7CisJcmVxLT51 LmNvbm5lY3QubGVuID0gYWRkcl9sZW47CisJcmVxLT51LmNvbm5lY3QuZmxhZ3MgPSBmbGFnczsK KwlyZXEtPnUuY29ubmVjdC5yZWYgPSBtYXAtPmFjdGl2ZS5yZWY7CisJcmVxLT51LmNvbm5lY3Qu ZXZ0Y2huID0gZXZ0Y2huOworCQorCWxpc3RfYWRkX3RhaWwoJm1hcC0+bGlzdCwgJmJlZGF0YS0+ c29ja2V0X21hcHBpbmdzKTsKKwltYXAtPnNvY2sgPSBzb2NrOworCVdSSVRFX09OQ0Uoc29jay0+ c2stPnNrX3NlbmRfaGVhZCwgKHZvaWQgKiltYXApOworCisJYmVkYXRhLT5yaW5nLnJlcV9wcm9k X3B2dCsrOworCVJJTkdfUFVTSF9SRVFVRVNUU19BTkRfQ0hFQ0tfTk9USUZZKCZiZWRhdGEtPnJp bmcsIG5vdGlmeSk7CisJc3Bpbl91bmxvY2soJmJlZGF0YS0+cHZjYWxsc3NfbG9jayk7CisKKwlp ZiAobm90aWZ5KQorCQlub3RpZnlfcmVtb3RlX3ZpYV9pcnEoYmVkYXRhLT5pcnEpOworCisJd2Fp dF9ldmVudChiZWRhdGEtPmluZmxpZ2h0X3JlcSwKKwkJICAgUkVBRF9PTkNFKGJlZGF0YS0+cnNw W3JlcV9pZF0ucmVxX2lkKSA9PSByZXFfaWQpOworCisJcmV0ID0gYmVkYXRhLT5yc3BbcmVxX2lk XS5yZXQ7CisJLyogcmVhZCByZXQsIHRoZW4gc2V0IHRoaXMgcnNwIHNsb3QgdG8gYmUgcmV1c2Vk ICovCisJc21wX21iKCk7CisJV1JJVEVfT05DRShiZWRhdGEtPnJzcFtyZXFfaWRdLnJlcV9pZCwg UFZDQUxMU19JTlZBTElEX0lEKTsKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IHhlbmJ1c19kZXZpY2VfaWQgcHZjYWxsc19mcm9udF9pZHNbXSA9IHsKIAl7ICJwdmNhbGxz IiB9LAogCXsgIiIgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oIGIv ZHJpdmVycy94ZW4vcHZjYWxscy1mcm9udC5oCmluZGV4IGI3ZGFiZWQuLjYzYjA0MTcgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMveGVuL3B2Y2FsbHMtZnJvbnQuaAorKysgYi9kcml2ZXJzL3hlbi9wdmNh bGxzLWZyb250LmgKQEAgLTQsNSArNCw3IEBACiAjaW5jbHVkZSA8bGludXgvbmV0Lmg+CiAKIGlu dCBwdmNhbGxzX2Zyb250X3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKK2ludCBwdmNhbGxz X2Zyb250X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICphZGRy LAorCQkJICBpbnQgYWRkcl9sZW4sIGludCBmbGFncyk7CiAKICNlbmRpZgotLSAKMS45LjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK