The cleaner for the header caching accesses the tunnel port table
without holding any locks. However, it doesn't have a read memory
barrier, so there is no guarantee that the contents of the table
have made it to the right CPU.
Found by sparse.
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
schedule_cache_cleaner();
rcu_read_lock();
- tbl_foreach(port_table, cache_cleaner_cb, NULL);
+ tbl_foreach(rcu_dereference(port_table), cache_cleaner_cb, NULL);
rcu_read_unlock();
}