Messages in this thread Patch in this message | | | From | Kuniyuki Iwashima <> | Subject | [PATCH v1 net 02/15] net: Fix data-races around weight_p and dev_weight_[rt]x_bias. | Date | Mon, 15 Aug 2022 22:23:34 -0700 |
| |
While reading weight_p and dev_weight_[rt]x_bias, they can be changed concurrently. Thus, we need to add READ_ONCE() to their readers.
Fixes: 3d48b53fb2ae ("net: dev_weight: TX/RX orthogonality") Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> --- CC: Matthias Tafelmeier <matthias.tafelmeier@gmx.net> --- net/core/dev.c | 2 +- net/core/sysctl_net_core.c | 6 ++++-- net/sched/sch_generic.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c index 716df64fcfa5..b5b92dcd5eea 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -5918,7 +5918,7 @@ static int process_backlog(struct napi_struct *napi, int quota) net_rps_action_and_irq_enable(sd); } - napi->weight = dev_rx_weight; + napi->weight = READ_ONCE(dev_rx_weight); while (again) { struct sk_buff *skb; diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c index 71a13596ea2b..d82ba0c27175 100644 --- a/net/core/sysctl_net_core.c +++ b/net/core/sysctl_net_core.c @@ -240,8 +240,10 @@ static int proc_do_dev_weight(struct ctl_table *table, int write, if (ret != 0) return ret; - dev_rx_weight = weight_p * dev_weight_rx_bias; - dev_tx_weight = weight_p * dev_weight_tx_bias; + WRITE_ONCE(dev_rx_weight, + READ_ONCE(weight_p) * READ_ONCE(dev_weight_rx_bias)); + WRITE_ONCE(dev_tx_weight, + READ_ONCE(weight_p) * READ_ONCE(dev_weight_tx_bias)); return ret; } diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index d47b9689eba6..99b697ad2b98 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -409,7 +409,7 @@ static inline bool qdisc_restart(struct Qdisc *q, int *packets) void __qdisc_run(struct Qdisc *q) { - int quota = dev_tx_weight; + int quota = READ_ONCE(dev_tx_weight); int packets; while (qdisc_restart(q, &packets)) { -- 2.30.2
| |