From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sarah Newman Subject: [PATCH] vixen: transmit NUL characters received from guest serial port Date: Fri, 12 Jan 2018 15:39:00 -0800 Message-ID: <1515800340-5205-1-git-send-email-srn@prgmr.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ea8wt-00068c-NK for xen-devel@lists.xenproject.org; Fri, 12 Jan 2018 23:41:23 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: sergey.dyasli@citrix.com, anthony@codemonkey.ws, Sarah Newman List-Id: xen-devel@lists.xenproject.org Q2VydGFpbiBwcm9ncmFtcywgc3VjaCBhcyB0aGUgTmV0QlNEIGluc3RhbGxlciwgaW5jbHVkZSBO VUwgY2hhcmFjdGVycwppbiB0aGVpciBvdXRwdXQuIFVzaW5nIG51bGwtdGVybWluYXRlZCBzdHJp bmdzIGZvciB0cmFuc21pdHRpbmcgZGF0YQpmcm9tIHRoZSBndWVzdCB0byB0aGUgTDAgaHlwZXJ2 aXNvciBtZWFudCB0aGUgb3V0cHV0IHdhcyBiZWluZyBjb3JydXB0ZWQuCgpUaGlzIG1ha2VzIG9u bHkgdGhlIHJlcXVpcmVkIGNoYW5nZXMgZm9yIHZpeGVuIHRvIHdvcmsgcHJvcGVybHkuCkZ1dHVy ZSB3b3JrIGNvdWxkIGluY2x1ZGUgZ2VuZXJhbGx5IHN3aXRjaGluZyBhd2F5IGZyb20gbnVsbC10 ZXJtaW5hdGVkCnN0cmluZ3Mgd2l0aGluIHRoZSB4ZW4gY29uc29sZSBjb2RlLgoKU2lnbmVkLW9m Zi1ieTogU2FyYWggTmV3bWFuIDxzcm5AcHJnbXIuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9ndWVz dC92aXhlbi5jIHwgIDQgKystLQogeGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMgfCAxNCArKysr KysrKysrKy0tLQogeGVuL2RyaXZlcnMvY2hhci9zZXJpYWwuYyAgfCAzNSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUveGVuL2xpYi5oICAgICAgfCAgMiAr LQogeGVuL2luY2x1ZGUveGVuL3NlcmlhbC5oICAgfCAgMyArKysKIDUgZmlsZXMgY2hhbmdlZCwg NTIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvZ3Vlc3Qvdml4ZW4uYyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC92aXhlbi5jCmluZGV4IDljYjFh ODAuLjFiMWQyZTAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ndWVzdC92aXhlbi5jCisrKyBi L3hlbi9hcmNoL3g4Ni9ndWVzdC92aXhlbi5jCkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCB2aXhl bl9yaW5nX3Byb2Nlc3ModWludDE2X3QgcG9ydCkKICAgICAgICAgY2hhciBjaCA9IHItPm91dFtN QVNLX1hFTkNPTlNfSURYKHItPm91dF9jb25zLCByLT5vdXQpXTsKICAgICAgICAgaWYgKG4gPT0g c2l6ZW9mKGJ1ZmZlcikgLSAxKSB7CiAgICAgICAgICAgICBidWZmZXJbbl0gPSAwOwotICAgICAg ICAgICAgZ3Vlc3RfcHV0cyhoYXJkd2FyZV9kb21haW4sIGJ1ZmZlcik7CisgICAgICAgICAgICBn dWVzdF9wdXRzbihoYXJkd2FyZV9kb21haW4sIGJ1ZmZlciwgbik7CiAgICAgICAgICAgICBuID0g MDsKICAgICAgICAgfQogICAgICAgICBidWZmZXJbbisrXSA9IGNoOwpAQCAtMzE0LDcgKzMxNCw3 IEBAIGJvb2wgdml4ZW5fcmluZ19wcm9jZXNzKHVpbnQxNl90IHBvcnQpCiAKICAgICBpZiAobikg ewogICAgICAgICBidWZmZXJbbl0gPSAwOwotICAgICAgICBndWVzdF9wdXRzKGhhcmR3YXJlX2Rv bWFpbiwgYnVmZmVyKTsKKyAgICAgICAgZ3Vlc3RfcHV0c24oaGFyZHdhcmVfZG9tYWluLCBidWZm ZXIsIG4pOwogICAgIH0KIAogICAgIHNwaW5fdW5sb2NrKCZ2aXhlbl94ZW5jb25zX2xvY2spOwpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hhci9jb25zb2xlLmMgYi94ZW4vZHJpdmVycy9jaGFy L2NvbnNvbGUuYwppbmRleCAzOGE1ZDY3Li5iYTIyY2RmIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9jaGFyL2NvbnNvbGUuYworKysgYi94ZW4vZHJpdmVycy9jaGFyL2NvbnNvbGUuYwpAQCAtMzQx LDYgKzM0MSwxNCBAQCBzdGF0aWMgdm9pZCBzZXJjb25fcHV0cyhjb25zdCBjaGFyICpzKQogICAg ICAgICBzZXJpYWxfcHV0cyhzZXJjb25faGFuZGxlLCBzKTsKIH0KIAorc3RhdGljIHZvaWQgc2Vy Y29uX3B1dHNuKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBjb3VudCkKK3sKKyAgICBpZiAo IHNlcmlhbF9zdGVhbF9mbiAhPSBOVUxMICkKKyAgICAgICAgKCpzZXJpYWxfc3RlYWxfZm4pKHMp OworICAgIGVsc2UKKyAgICAgICAgc2VyaWFsX3B1dHNuKHNlcmNvbl9oYW5kbGUsIHMsIGNvdW50 KTsKK30KKwogc3RhdGljIHZvaWQgZHVtcF9jb25zb2xlX3Jpbmdfa2V5KHVuc2lnbmVkIGNoYXIg a2V5KQogewogICAgIHVpbnQzMl90IGlkeCwgbGVuLCBzb2ZhciwgYzsKQEAgLTQ2MSw3ICs0Njks NyBAQCBzdGF0aWMgbG9uZyBndWVzdF9jb25zb2xlX3dyaXRlKFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0oY2hhcikgYnVmZmVyLCBpbnQgY291bnQpCiAgICAgICAgICAgICAvKiBVc2UgZGlyZWN0IGNv bnNvbGUgb3V0cHV0IGFzIGl0IGNvdWxkIGJlIGludGVyYWN0aXZlICovCiAgICAgICAgICAgICBz cGluX2xvY2tfaXJxKCZjb25zb2xlX2xvY2spOwogCi0gICAgICAgICAgICBzZXJjb25fcHV0cyhr YnVmKTsKKyAgICAgICAgICAgIHNlcmNvbl9wdXRzbihrYnVmLCBjb3VudCk7CiAgICAgICAgICAg ICB2aWRlb19wdXRzKGtidWYpOwogCiAgICAgICAgICAgICBpZiAoIG9wdF9jb25zb2xlX3RvX3Jp bmcgKQpAQCAtNzYxLDExICs3NjksMTEgQEAgdm9pZCBndWVzdF9wcmludGsoY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAgICAgdmFfZW5kKGFyZ3MpOwogfQog Ci12b2lkIGd1ZXN0X3B1dHMoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3QgY2hhciAqa2J1 ZikKK3ZvaWQgZ3Vlc3RfcHV0c24oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3QgY2hhciAq a2J1ZiwgdW5zaWduZWQgaW50IGNvdW50KQogewogICAgIHNwaW5fbG9ja19pcnEoJmNvbnNvbGVf bG9jayk7CiAKLSAgICBzZXJjb25fcHV0cyhrYnVmKTsKKyAgICBzZXJjb25fcHV0c24oa2J1Ziwg Y291bnQpOwogICAgIHZpZGVvX3B1dHMoa2J1Zik7CiAKICAgICBpZiAoIG9wdF9jb25zb2xlX3Rv X3JpbmcgKQpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hhci9zZXJpYWwuYyBiL3hlbi9kcml2 ZXJzL2NoYXIvc2VyaWFsLmMKaW5kZXggMDlhMjBhYy4uZTkwMzc4YSAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvY2hhci9zZXJpYWwuYworKysgYi94ZW4vZHJpdmVycy9jaGFyL3NlcmlhbC5jCkBA IC0yMjMsNiArMjIzLDQxIEBAIHZvaWQgc2VyaWFsX3B1dGMoaW50IGhhbmRsZSwgY2hhciBjKQog ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBvcnQtPnR4X2xvY2ssIGZsYWdzKTsKIH0KIAor dm9pZCBzZXJpYWxfcHV0c24oaW50IGhhbmRsZSwgY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50 IGNvdW50KQoreworICAgIHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydDsKKyAgICB1bnNpZ25lZCBs b25nIGZsYWdzOworICAgIGNoYXIgYzsKKworICAgIGlmICggaGFuZGxlID09IC0xICkKKyAgICAg ICAgcmV0dXJuOworCisgICAgcG9ydCA9ICZjb21baGFuZGxlICYgU0VSSE5EX0lEWF07CisgICAg aWYgKCAhcG9ydC0+ZHJpdmVyIHx8ICFwb3J0LT5kcml2ZXItPnB1dGMgKQorICAgICAgICByZXR1 cm47CisKKyAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcG9ydC0+dHhfbG9jaywgZmxhZ3MpOworCisg ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAg ICAgYyA9ICpzKys7CisgICAgICAgIGlmICggKGMgPT0gJ1xuJykgJiYgKGhhbmRsZSAmIFNFUkhO RF9DT09LRUQpICkKKyAgICAgICAgICAgIF9fc2VyaWFsX3B1dGMocG9ydCwgJ1xyJyB8ICgoaGFu ZGxlICYgU0VSSE5EX0hJKSA/IDB4ODAgOiAweDAwKSk7CisKKyAgICAgICAgaWYgKCBoYW5kbGUg JiBTRVJITkRfSEkgKQorICAgICAgICAgICAgYyB8PSAweDgwOworICAgICAgICBlbHNlIGlmICgg aGFuZGxlICYgU0VSSE5EX0xPICkKKyAgICAgICAgICAgIGMgJj0gMHg3ZjsKKworICAgICAgICBf X3NlcmlhbF9wdXRjKHBvcnQsIGMpOworICAgIH0KKworICAgIGlmICggcG9ydC0+ZHJpdmVyLT5m bHVzaCApCisgICAgICAgIHBvcnQtPmRyaXZlci0+Zmx1c2gocG9ydCk7CisKKyAgICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZwb3J0LT50eF9sb2NrLCBmbGFncyk7Cit9CisKIHZvaWQgc2VyaWFs X3B1dHMoaW50IGhhbmRsZSwgY29uc3QgY2hhciAqcykKIHsKICAgICBzdHJ1Y3Qgc2VyaWFsX3Bv cnQgKnBvcnQ7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbGliLmggYi94ZW4vaW5jbHVk ZS94ZW4vbGliLmgKaW5kZXggNTM1OWZhNC4uYmFjY2FlMCAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUveGVuL2xpYi5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9saWIuaApAQCAtOTEsNyArOTEsNyBA QCBleHRlcm4gdm9pZCBwcmludGsoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAgICAgX19hdHRy aWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogZXh0ZXJuIHZvaWQgZ3Vlc3RfcHJp bnRrKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogICAg IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKLWV4dGVybiB2b2lkIGd1 ZXN0X3B1dHMoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3QgY2hhciAqbWVzc2FnZSk7Citl eHRlcm4gdm9pZCBndWVzdF9wdXRzbihjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBjaGFy ICptZXNzYWdlLCB1bnNpZ25lZCBpbnQgY291bnQpOwogZXh0ZXJuIHZvaWQgbm9yZXR1cm4gcGFu aWMoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo cHJpbnRmLCAxLCAyKSkpOwogZXh0ZXJuIGxvbmcgdm1fYXNzaXN0KHN0cnVjdCBkb21haW4gKiwg dW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgaW50IHR5cGUsCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS94ZW4vc2VyaWFsLmggYi94ZW4vaW5jbHVkZS94ZW4vc2VyaWFsLmgKaW5kZXggMTIxMmEx Mi4uODdkYmRjZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NlcmlhbC5oCisrKyBiL3hl bi9pbmNsdWRlL3hlbi9zZXJpYWwuaApAQCAtMTE1LDYgKzExNSw5IEBAIHZvaWQgc2VyaWFsX3B1 dGMoaW50IGhhbmRsZSwgY2hhciBjKTsKIC8qIFRyYW5zbWl0IGEgTlVMTC10ZXJtaW5hdGVkIHN0 cmluZyB2aWEgdGhlIHNwZWNpZmllZCBDT00gcG9ydC4gKi8KIHZvaWQgc2VyaWFsX3B1dHMoaW50 IGhhbmRsZSwgY29uc3QgY2hhciAqcyk7CiAKKy8qIFRyYW5zbWl0ICJjb3VudCIgY2hhcmFjdGVy cyB2aWEgdGhlIHNwZWNpZmllZCBDT00gcG9ydC4gKi8KK3ZvaWQgc2VyaWFsX3B1dHNuKGludCBo YW5kbGUsIGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBjb3VudCk7CisKIC8qCiAgKiBBbiBh bHRlcm5hdGl2ZSB0byByZWdpc3RlcmluZyBhIGNoYXJhY3Rlci1yZWNlaXZlIGhvb2suIFRoaXMg ZnVuY3Rpb24KICAqIHdpbGwgbm90IHJldHVybiB1bnRpbCBhIGNoYXJhY3RlciBpcyBhdmFpbGFi bGUuIEl0IGNhbiBzYWZlbHkgYmUKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==