Skip to content

Commit

Permalink
net: kernel panic in dev_hard_start_xmit: remove faulty software TX t…
Browse files Browse the repository at this point in the history
…ime stamping

The current implementation of the TX software time stamping fallback is
faulty because it accesses the skb after ndo_start_xmit() returns
successfully. This patch removes the fallback, which fixes kernel panics
seen during stress tests. Hardware time stamping is not affected by this
removal.

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Patrick Ohly authored and David S. Miller committed Feb 21, 2009
1 parent be0c22a commit cd4d8fd
Showing 1 changed file with 0 additions and 13 deletions.
13 changes: 0 additions & 13 deletions net/core/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -1672,16 +1672,6 @@ static int dev_gso_segment(struct sk_buff *skb)
return 0;
}

static void tstamp_tx(struct sk_buff *skb)
{
union skb_shared_tx *shtx =
skb_tx(skb);
if (unlikely(shtx->software &&
!shtx->in_progress)) {
skb_tstamp_tx(skb, NULL);
}
}

int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
struct netdev_queue *txq)
{
Expand Down Expand Up @@ -1715,8 +1705,6 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
* the skb destructor before the call and restoring it
* afterwards, then doing the skb_orphan() ourselves?
*/
if (likely(!rc))
tstamp_tx(skb);
return rc;
}

Expand All @@ -1732,7 +1720,6 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
skb->next = nskb;
return rc;
}
tstamp_tx(skb);
if (unlikely(netif_tx_queue_stopped(txq) && skb->next))
return NETDEV_TX_BUSY;
} while (skb->next);
Expand Down

0 comments on commit cd4d8fd

Please sign in to comment.