[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 2/6] xen-netfront: reduce gso_max_size to account for ethernet header


On 25-03-2013 15:08, Wei Liu wrote:

The maximum packet including ethernet header that can be handled by netfront /
netback wire format is 65535. Reduce gso_max_size accordingly.

Drop skb and print warning when skb->len > 65535. This can 1) save the effort
to send malformed packet to netback, 2) help spotting misconfiguration of
netfront in the future.

Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
  drivers/net/xen-netfront.c |   14 ++++++++++++++
  1 file changed, 14 insertions(+)

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 5527663..3ae9dc1 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -547,6 +547,18 @@ static int xennet_start_xmit(struct sk_buff *skb, struct 
net_device *dev)
        unsigned int len = skb_headlen(skb);
        unsigned long flags;

+       /* Wire format of xen_netif_tx_request only supports skb->len
+        * < 64K, because size field in xen_netif_tx_request is
+        * uint16_t. If skb->len is too big, drop it and alert user about
+        * misconfiguration.
+        */
+       if (unlikely(skb->len >= (uint16_t)(~0))) {

Such types as 'uint16_t' are intended for userland -- use 'u16' instead. Better still, just use 0xffffu.

WBR, Sergei

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.