Skip to content

Commit

Permalink
datapath: Replace rcu_dereference() with rcu_access_pointer()
Browse files Browse the repository at this point in the history
The "rcu_dereference()" call is used directly in a condition.
Since its return value is never dereferenced it is recommended to use
"rcu_access_pointer()" instead of "rcu_dereference()".
Therefore, this patch makes the replacement.

The following Coccinelle semantic patch was used:
@@
@@

(
 if(
 (<+...
- rcu_dereference
+ rcu_access_pointer
  (...)
  ...+>)) {...}
|
 while(
 (<+...
- rcu_dereference
+ rcu_access_pointer
  (...)
  ...+>)) {...}
)

Signed-off-by: Andreea-Cristina Bernat <bernat.ada@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Pravin B Shelar <pshelar@nicira.com>
  • Loading branch information
Andreea-Cristina Bernat authored and Pravin B Shelar committed Sep 12, 2014
1 parent f00fa8c commit bc36fcd
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
2 changes: 1 addition & 1 deletion datapath/flow.c
Expand Up @@ -93,7 +93,7 @@ void ovs_flow_stats_update(struct sw_flow *flow, __be16 tcp_flags,
* allocated stats as we have already locked them.
*/
if (likely(flow->stats_last_writer != NUMA_NO_NODE)
&& likely(!rcu_dereference(flow->stats[node]))) {
&& likely(!rcu_access_pointer(flow->stats[node]))) {
/* Try to allocate node-specific stats. */
struct flow_stats *new_stats;

Expand Down
4 changes: 4 additions & 0 deletions datapath/linux/compat/include/linux/rcupdate.h
Expand Up @@ -15,6 +15,10 @@
#define rcu_dereference_raw(p) rcu_dereference_check(p, 1)
#endif

#ifndef rcu_access_pointer
#define rcu_access_pointer(p) rcu_dereference(p)
#endif

#ifndef HAVE_RCU_READ_LOCK_HELD
static inline int rcu_read_lock_held(void)
{
Expand Down

0 comments on commit bc36fcd

Please sign in to comment.