datapath: Fix recv path for CONFIG_PREEMPT_RCU.
authorPravin B Shelar <pshelar@nicira.com>
Fri, 7 Oct 2011 02:53:23 +0000 (19:53 -0700)
committerPravin B Shelar <pshelar@nicira.com>
Fri, 7 Oct 2011 02:53:23 +0000 (19:53 -0700)
commitad48b32f708fcd382af593d2f8c1fff3fbd1db81
treea90bcfb6b05a0b487ecbc9e2bbee9beed01db4bc
parent36f9f11036751990cb4ae41799a07dc8a6ffba6c
datapath: Fix recv path for CONFIG_PREEMPT_RCU.

In case CONFIG_PREEMPT_RCU, rcu grace period waits only for RCU
read-side critical sections that are delimited by rcu_read_lock() and
rcu_read_unlock(). internal_dev_xmit() is called in rcu_read_lock_bh
context. Therefore we need to explicitly take rcu lock to prevent race
with call_rcu() in PREEMPT_RCU case.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Jesse Gross <jesse@nicira.com>
datapath/vport-internal_dev.c