linux/drivers/net
Jan Beulich f4b5b99f18 xen-netfront: pull on receive skb may need to happen earlier
commit 093b9c71b6 upstream.

Due to commit 3683243b ("xen-netfront: use __pskb_pull_tail to ensure
linear area is big enough on RX") xennet_fill_frags() may end up
filling MAX_SKB_FRAGS + 1 fragments in a receive skb, and only reduce
the fragment count subsequently via __pskb_pull_tail(). That's a
result of xennet_get_responses() allowing a maximum of one more slot to
be consumed (and intermediately transformed into a fragment) if the
head slot has a size less than or equal to RX_COPY_THRESHOLD.

Hence we need to adjust xennet_fill_frags() to pull earlier if we
reached the maximum fragment count - due to the described behavior of
xennet_get_responses() this guarantees that at least the first fragment
will get completely consumed, and hence the fragment count reduced.

In order to not needlessly call __pskb_pull_tail() twice, make the
original call conditional upon the pull target not having been reached
yet, and defer the newly added one as much as possible (an alternative
would have been to always call the function right before the call to
xennet_fill_frags(), but that would imply more frequent cases of
needing to call it twice).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-04 16:50:53 +08:00
..
appletalk
arcnet
bonding bonding: fix slave speed reporting in bond_miimon_commit 2013-06-24 00:04:55 -07:00
caif caif: CAIF_VIRTIO should depend on HAS_DMA 2013-05-11 16:28:24 -07:00
can can: usb_8dev: unregister netdev before free()ing 2013-06-19 08:56:10 +02:00
cris
dsa
ethernet be2net: Fix to avoid hardware workaround when not needed 2013-07-28 16:30:04 -07:00
fddi
hamradio drivers/net: rename random32() to prandom_u32() 2013-05-07 18:38:27 -07:00
hippi
hyperv hyperv: Fix the NETIF_F_SG flag setting in netvsc 2013-07-28 16:30:04 -07:00
ieee802154 at86rf230: change irq handling to prevent lockups with edge type irq 2013-04-16 16:34:08 -04:00
irda net/irda: fix error return code in bfin_sir_open() 2013-05-08 13:13:29 -07:00
phy net: phy: fix a bug when verify the EEE support 2013-05-27 23:30:09 -07:00
plip net: add ETH_P_802_3_MIN 2013-03-28 01:20:42 -04:00
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-05-01 14:08:52 -07:00
slip
team team: move add to port list before port enablement 2013-06-12 00:56:27 -07:00
usb qmi_wwan: add various Novatel Gobi1K IDs 2013-06-24 00:08:38 -07:00
vmxnet3 net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
wan dlci: validate the net device in dlci_del() 2013-06-26 15:36:42 -07:00
wimax
wireless b43: ensue that BCMA is "y" when B43 is "y" 2013-07-25 14:07:31 -07:00
xen-netback xen-netback: don't de-reference vif pointer after having called xenvif_put() 2013-06-13 01:25:24 -07:00
dummy.c dummy: fix oops when loading the dummy failed 2013-07-28 16:30:01 -07:00
eql.c
ifb.c ifb: fix oops when loading the ifb failed 2013-07-28 16:30:01 -07:00
Kconfig
LICENSE.SRC
loopback.c
macvlan.c macvlan: don't touch promisc without passthrough 2013-06-13 01:20:33 -07:00
macvtap.c macvtap: do not zerocopy if iov needs more pages than MAX_SKB_FRAGS 2013-07-28 16:30:05 -07:00
Makefile
mdio.c
mii.c
netconsole.c
ntb_netdev.c ntb_netdev: remove from list on exit 2013-05-15 10:58:14 -07:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tuntap: do not zerocopy if iov needs more pages than MAX_SKB_FRAGS 2013-07-28 16:30:04 -07:00
veth.c net: vlan: announce STAG offload capability in some drivers 2013-04-19 14:46:06 -04:00
virtio_net.c virtio_net: fix race in RX VQ processing 2013-07-28 16:29:56 -07:00
vxlan.c vxlan: fix check for migration of static entry 2013-06-19 00:50:58 -07:00
xen-netfront.c xen-netfront: pull on receive skb may need to happen earlier 2013-08-04 16:50:53 +08:00