Thread (53 messages) 53 messages, 14 authors, 2013-04-09

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

From: Sergei Shtylyov <hidden>
Date: 2013-03-25 15:51:43

Hello.

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 <redacted>
---
  drivers/net/xen-netfront.c |   14 ++++++++++++++
  1 file changed, 14 insertions(+)
quoted hunk ↗ jump to hunk
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help