net/mlx5: Don't call timecounter cyc2time directly from 1PPS flow
authorEran Ben Elisha <eranbe@mellanox.com>
Tue, 16 Jun 2020 09:07:10 +0000 (12:07 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Tue, 15 Sep 2020 18:59:50 +0000 (11:59 -0700)
Before calling timecounter_cyc2time(), clock->lock must be taken.
Use mlx5_timecounter_cyc2time instead which guarantees a safe access.

Fixes: afc98a0b46d8 ("net/mlx5: Update ptp_clock_event foreach PPS event")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c

index f8465e4..7fc59e0 100644 (file)
@@ -557,8 +557,9 @@ static int mlx5_pps_event(struct notifier_block *nb,
        switch (clock->ptp_info.pin_config[pin].func) {
        case PTP_PF_EXTTS:
                ptp_event.index = pin;
-               ptp_event.timestamp = timecounter_cyc2time(&clock->tc,
-                                       be64_to_cpu(eqe->data.pps.time_stamp));
+               ptp_event.timestamp =
+                       mlx5_timecounter_cyc2time(clock,
+                                                 be64_to_cpu(eqe->data.pps.time_stamp));
                if (clock->pps_info.enabled) {
                        ptp_event.type = PTP_CLOCK_PPSUSR;
                        ptp_event.pps_times.ts_real =