Message ID | 1291611032.2806.310.camel@edumazet-laptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Mon, 06 Dec 2010 05:50:32 +0100 > Le lundi 06 décembre 2010 à 08:01 +0800, Changli Gao a écrit : > >> How about using skb_headroom(skb) < ETH_HLEN ? >> > > Yes, good idea, thanks ! > > [PATCH net-2.6] net: fix skb_defer_rx_timestamp() > > After commit c1f19b51d1d8 (net: support time stamping in phy devices.), > kernel might crash if CONFIG_NETWORK_PHY_TIMESTAMPING=y and > skb_defer_rx_timestamp() handles a packet without an ethernet header. > > Fixes kernel bugzilla #24102 > > Reference: https://bugzilla.kernel.org/show_bug.cgi?id=24102 > Reported-and-tested-by: Andrew Watts <akwatts@ymail.com> > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Applied and queued up for -stable, 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/timestamping.c b/net/core/timestamping.c index 0ae6c22..c19bb4e 100644 --- a/net/core/timestamping.c +++ b/net/core/timestamping.c @@ -96,11 +96,13 @@ bool skb_defer_rx_timestamp(struct sk_buff *skb) struct phy_device *phydev; unsigned int type; - skb_push(skb, ETH_HLEN); + if (skb_headroom(skb) < ETH_HLEN) + return false; + __skb_push(skb, ETH_HLEN); type = classify(skb); - skb_pull(skb, ETH_HLEN); + __skb_pull(skb, ETH_HLEN); switch (type) { case PTP_CLASS_V1_IPV4: