Message ID | 1235208488.22598.40.camel@pohly-MOBL |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Sat, Feb 21, 2009 at 1:28 AM, Patrick Ohly <patrick.ohly@intel.com> wrote: > 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: Patrick Ohly <patrick.ohly@intel.com> > Signed-Off: Emil Tantilov <emil.s.tantilov@intel.com> > Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
From: Patrick Ohly <patrick.ohly@intel.com> Date: Sat, 21 Feb 2009 10:28:08 +0100 > 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: Patrick Ohly <patrick.ohly@intel.com> > Signed-Off: Emil Tantilov <emil.s.tantilov@intel.com> It's "Signed-of-by", three words, only the first capitalized. Aplied, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/dev.c b/net/core/dev.c index d393fc9..1dcace3 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -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) { @@ -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; } @@ -1732,7 +1720,6 @@ gso: skb->next = nskb; return rc; } - tstamp_tx(skb); if (unlikely(netif_tx_queue_stopped(txq) && skb->next)) return NETDEV_TX_BUSY; } while (skb->next);