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.

Reply via email to