• Richard Cochran's avatar
    net: dsa: mv88e6xxx: Fix receive time stamp race condition. · 22904823
    Richard Cochran authored
    The DSA stack passes received PTP frames to this driver via
    mv88e6xxx_port_rxtstamp() for deferred delivery.  The driver then
    queues the frame and kicks the worker thread.  The work callback reads
    out the latched receive time stamp and then works through the queue,
    delivering any non-matching frames without a time stamp.
    
    If a new frame arrives after the worker thread has read out the time
    stamp register but enters the queue before the worker finishes
    processing the queue, that frame will be delivered without a time
    stamp.
    
    This patch fixes the race by moving the queue onto a list on the stack
    before reading out the latched time stamp value.
    
    Fixes: c6fe0ad2 ("net: dsa: mv88e6xxx: add rx/tx timestamping support")
    Signed-off-by: default avatarRichard Cochran <richardcochran@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    22904823
hwtstamp.c 15.2 KB