summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/bonding/bond_main.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 98f391ac761f..b7923d052a8d 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1204,8 +1204,9 @@ void bond_peer_notify_work_rearm(struct bonding *bond, unsigned long delay)
/* Peer notify update handler. Holds only RTNL */
static void bond_peer_notify_reset(struct bonding *bond)
{
- bond->send_peer_notif = bond->params.num_peer_notif *
- max(1, bond->params.peer_notif_delay);
+ WRITE_ONCE(bond->send_peer_notif,
+ bond->params.num_peer_notif *
+ max(1, bond->params.peer_notif_delay));
}
static void bond_peer_notify_handler(struct work_struct *work)
@@ -2832,7 +2833,7 @@ static void bond_mii_monitor(struct work_struct *work)
rcu_read_unlock();
- if (commit || bond->send_peer_notif) {
+ if (commit || READ_ONCE(bond->send_peer_notif)) {
/* Race avoidance with bond_close cancel of workqueue */
if (!rtnl_trylock()) {
delay = 1;
@@ -3787,7 +3788,7 @@ static void bond_activebackup_arp_mon(struct bonding *bond)
should_notify_rtnl = bond_ab_arp_probe(bond);
rcu_read_unlock();
- if (bond->send_peer_notif || should_notify_rtnl) {
+ if (READ_ONCE(bond->send_peer_notif) || should_notify_rtnl) {
if (!rtnl_trylock()) {
delta_in_ticks = 1;
goto re_arm;