summaryrefslogtreecommitdiff
path: root/net/sched/sch_generic.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2024-11-04 14:25:33 +1000
committerDave Airlie <airlied@redhat.com>2024-11-04 14:25:33 +1000
commit30169bb64580bd7bce9290c1952bf0aa6cc37fe5 (patch)
tree94c6ab9dec68f5648a055752aad32d816bd27e11 /net/sched/sch_generic.c
parentbcfe43f0ea77c42c2154fb79b99b7d1d82ac3231 (diff)
parent59b723cd2adbac2a34fc8e12c74ae26ae45bf230 (diff)
downloadlinux-next-30169bb64580bd7bce9290c1952bf0aa6cc37fe5.tar.gz
linux-next-30169bb64580bd7bce9290c1952bf0aa6cc37fe5.zip
Backmerge v6.12-rc6 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next
Backmerge Linus tree for some drm-fixes needed for msm and xe merges. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r--net/sched/sch_generic.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 2af24547a82c..38ec18f73de4 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -512,9 +512,15 @@ static void dev_watchdog(struct timer_list *t)
struct netdev_queue *txq;
txq = netdev_get_tx_queue(dev, i);
- trans_start = READ_ONCE(txq->trans_start);
if (!netif_xmit_stopped(txq))
continue;
+
+ /* Paired with WRITE_ONCE() + smp_mb...() in
+ * netdev_tx_sent_queue() and netif_tx_stop_queue().
+ */
+ smp_mb();
+ trans_start = READ_ONCE(txq->trans_start);
+
if (time_after(jiffies, trans_start + dev->watchdog_timeo)) {
timedout_ms = jiffies_to_msecs(jiffies - trans_start);
atomic_long_inc(&txq->trans_timeout);