From: Sergey Temerkhanov <[email protected]>

ptp.cached_phc_time is a 64-bit value updated by a periodic work item
on one CPU and read locklessly on another.  On 32-bit or non-atomic
architectures this can result in a torn read.  Use READ_ONCE() to
enforce a single atomic load.

Fixes: 77a781155a65 ("ice: enable receive hardware timestamping")
Cc: [email protected]
Signed-off-by: Sergey Temerkhanov <[email protected]>
Signed-off-by: Aleksandr Loktionov <[email protected]>
---

 drivers/net/ethernet/intel/ice/ice_ptp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c 
b/drivers/net/ethernet/intel/ice/ice_ptp.c
index 8b0530b..2ea4dbc 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
@@ -350,7 +350,7 @@ static u64 ice_ptp_extend_40b_ts(struct ice_pf *pf, u64 
in_tstamp)
                return 0;
        }
 
-       return ice_ptp_extend_32b_ts(pf->ptp.cached_phc_time,
+       return ice_ptp_extend_32b_ts(READ_ONCE(pf->ptp.cached_phc_time),
                                     (in_tstamp >> 8) & mask);
 }
 
-- 
2.52.0

Reply via email to