diff options
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 08fbd4622ccf..c2f0c6002a84 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -620,7 +620,7 @@ struct netdev_queue {  	netdevice_tracker	dev_tracker;  	struct Qdisc __rcu	*qdisc; -	struct Qdisc		*qdisc_sleeping; +	struct Qdisc __rcu	*qdisc_sleeping;  #ifdef CONFIG_SYSFS  	struct kobject		kobj;  #endif @@ -768,8 +768,11 @@ static inline void rps_record_sock_flow(struct rps_sock_flow_table *table,  		/* We only give a hint, preemption can change CPU under us */  		val |= raw_smp_processor_id(); -		if (table->ents[index] != val) -			table->ents[index] = val; +		/* The following WRITE_ONCE() is paired with the READ_ONCE() +		 * here, and another one in get_rps_cpu(). +		 */ +		if (READ_ONCE(table->ents[index]) != val) +			WRITE_ONCE(table->ents[index], val);  	}  }  | 
