The 9p protocol relies on a reliable transport, but the current code treats transport errors (ie, failure to marshal or unmarshal) as if they were coming from the backend. This doesn't make sense: if the transport failed, we should notify the guest that the transport is broken and needs to be reset, using transport specific means.
This series modifies both virtio and xen transports to take appropriate actions when hitting misconfigured buffers. -- Greg --- Greg Kurz (4): virtio-9p: record element after sanity checks virtio-9p: message header is 7-byte long virtio-9p: break device if buffers are misconfigured 9pfs: handle transport errors in pdu_complete() Stefano Stabellini (1): xen-9pfs: disconnect if buffers are misconfigured hw/9pfs/9p.c | 25 ++++++++----- hw/9pfs/9p.h | 7 +++- hw/9pfs/virtio-9p-device.c | 51 +++++++++++++++++++++----- hw/9pfs/xen-9p-backend.c | 88 +++++++++++++++++++++++++++++++++----------- 4 files changed, 129 insertions(+), 42 deletions(-)