From: Sebastian Andrzej Siewior <bige...@linutronix.de> Date: Mon, 4 Feb 2019 11:20:29 +0100
> During sendmsg() a cloned skb is saved via dp83640_txtstamp() in > ->tx_queue. After the NIC sends this packet, the PHY will reply with a > timestamp for that TX packet. If the cable is pulled at the right time I > don't see that packet. It might gets flushed as part of queue shutdown > on NIC's side. > Once the link is up again then after the next sendmsg() we enqueue > another skb in dp83640_txtstamp() and have two on the list. Then the PHY > will send a reply and decode_txts() attaches it to the first skb on the > list. > No crash occurs since refcounting works but we are one packet behind. > linuxptp/ptp4l usually closes the socket and opens a new one (in such a > timeout case) so those "stale" replies never get there. However it does > not resume normal operation anymore. > > Purge old skbs in decode_txts(). > > Fixes: cb646e2b02b2 ("ptp: Added a clock driver for the National > Semiconductor PHYTER.") > Signed-off-by: Sebastian Andrzej Siewior <bige...@linutronix.de> > Reviewed-by: Kurt Kanzenbach <k...@linutronix.de> > Acked-by: Richard Cochran <richardcoch...@gmail.com> Applied and queued up for -stable, thanks.