• D
    hw: replace most use of qemu_chr_fe_write with qemu_chr_fe_write_all · 6ab3fc32
    Daniel P. Berrange 提交于
    The qemu_chr_fe_write method will return -1 on EAGAIN if the
    chardev backend write would block. Almost no callers of the
    qemu_chr_fe_write() method check the return value, instead
    blindly assuming data was successfully sent. In most cases
    this will lead to silent data loss on interactive consoles,
    but in some cases (eg RNG EGD) it'll just cause corruption
    of the protocol being spoken.
    
    We unfortunately can't fix the virtio-console code, due to
    a bug in the Linux guest drivers, which would cause the
    entire Linux kernel to hang if we delay processing of the
    incoming data in any way. Fixing this requires first fixing
    the guest driver to not hold spinlocks while writing to the
    hvc device backend.
    
    Fixes bug: https://bugs.launchpad.net/qemu/+bug/1586756Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
    Message-Id: <1473170165-540-4-git-send-email-berrange@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    6ab3fc32
sh_serial.c 10.5 KB