← Back to team overview

kernel-packages team mailing list archive

[Bug 1328973] [NEW] GSO segmentation in zero-copy mode is broken

 

Public bug reported:

[SRU Justification]

[Setup]
 - 2 or more QEMU Guest VMs sharing the the same host
 - the Guests are communicating using virtio-net-pci devices
 - vhost-net is enabled

[Explanation]
If one Guest VM sends GSO packets to another while GRO is disabled for receiver, so these packets are segmented by net/core.
In this case, if zero-copy is enabled in vhost-net, the GSO packets TX completion is reported to userspace as before the TX is actually done.
The vhost-net's zero-copy mechanism is enabled by default since v3.8-rc1 (f9611c43).

[Impact]
Incorrect/junk data sent in case the transmitting Guest OS re-uses/frees the TX buffer immediately upon TX completion.

[Test Case]
Windows 2008R2 Guest VMs running MS HCK Offload LSO test.
NOTE1: GRO is always disabled in this case because it's not supported by Windows Guest virtio-net-pci drivers.
NOTE2: MS HCK re-uses the GSO (LSO) buffers, so it reproduces the issue every time.

[Note]
This bug has been fixed in v3.14-rc7 by 1fd819ec (https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=1fd819ecb90cc9b822cd84d3056ddba315d3340f).
The fix actually disables zero copy for this case since it forces unconditional fragments copying, but it resolves the issue mentioned.

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: Incomplete

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1328973

Title:
  GSO segmentation in zero-copy mode is broken

Status in “linux” package in Ubuntu:
  Incomplete

Bug description:
  [SRU Justification]

  [Setup]
   - 2 or more QEMU Guest VMs sharing the the same host
   - the Guests are communicating using virtio-net-pci devices
   - vhost-net is enabled

  [Explanation]
  If one Guest VM sends GSO packets to another while GRO is disabled for receiver, so these packets are segmented by net/core.
  In this case, if zero-copy is enabled in vhost-net, the GSO packets TX completion is reported to userspace as before the TX is actually done.
  The vhost-net's zero-copy mechanism is enabled by default since v3.8-rc1 (f9611c43).

  [Impact]
  Incorrect/junk data sent in case the transmitting Guest OS re-uses/frees the TX buffer immediately upon TX completion.

  [Test Case]
  Windows 2008R2 Guest VMs running MS HCK Offload LSO test.
  NOTE1: GRO is always disabled in this case because it's not supported by Windows Guest virtio-net-pci drivers.
  NOTE2: MS HCK re-uses the GSO (LSO) buffers, so it reproduces the issue every time.

  [Note]
  This bug has been fixed in v3.14-rc7 by 1fd819ec (https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=1fd819ecb90cc9b822cd84d3056ddba315d3340f).
  The fix actually disables zero copy for this case since it forces unconditional fragments copying, but it resolves the issue mentioned.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1328973/+subscriptions


Follow ups

References