Skip to content

Commit

Permalink
tile: avoid bug in tilepro net driver built with old hypervisor
Browse files Browse the repository at this point in the history
Building against headers from an older Tilera hypervisor can cause
the frags[] array to be overrun.  Don't enable TSO in that case.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Chris Metcalf authored and David S. Miller committed Aug 1, 2013
1 parent 439a93a commit 815d3ba
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions drivers/net/ethernet/tile/tilepro.c
Original file line number Diff line number Diff line change
Expand Up @@ -1929,7 +1929,7 @@ static int tile_net_tx(struct sk_buff *skb, struct net_device *dev)

unsigned int csum_start = skb_checksum_start_offset(skb);

lepp_frag_t frags[LEPP_MAX_FRAGS];
lepp_frag_t frags[1 + MAX_SKB_FRAGS];

unsigned int num_frags;

Expand All @@ -1944,7 +1944,7 @@ static int tile_net_tx(struct sk_buff *skb, struct net_device *dev)
unsigned int cmd_head, cmd_tail, cmd_next;
unsigned int comp_tail;

lepp_cmd_t cmds[LEPP_MAX_FRAGS];
lepp_cmd_t cmds[1 + MAX_SKB_FRAGS];


/*
Expand Down Expand Up @@ -2332,7 +2332,10 @@ static void tile_net_setup(struct net_device *dev)
features |= NETIF_F_LLTX;
features |= NETIF_F_HW_CSUM;
features |= NETIF_F_SG;
features |= NETIF_F_TSO;

/* We support TSO iff the HV supports sufficient frags. */
if (LEPP_MAX_FRAGS >= 1 + MAX_SKB_FRAGS)
features |= NETIF_F_TSO;

/* We can't support HIGHDMA without hash_default, since we need
* to be able to finv() with a VA if we don't have hash_default.
Expand Down

0 comments on commit 815d3ba

Please sign in to comment.