On Thu, Mar 27, 2014 at 10:19:23AM -0700, Pravin Shelar wrote: > On Thu, Mar 27, 2014 at 7:05 AM, Flavio Leitner <f...@redhat.com> wrote: > > There are two problematic situations. > > > > A deadlock can happen when is_percpu is false because it can get > > interrupted while holding the spinlock. Then it executes > > ovs_flow_stats_update() in softirq context which tries to get > > the same lock. > > > > The second sitation is that when is_percpu is true, the code > > correctly disables BH but only for the local CPU, so the > > following can happen when locking the remote CPU without > > disabling BH: > > > > CPU#0 CPU#1 > > ovs_flow_stats_get() > > stats_read() > > +->spin_lock remote CPU#1 ovs_flow_stats_get() > > | <interrupted> stats_read() > > | ... +--> spin_lock remote CPU#0 > > | | <interrupted> > > | ovs_flow_stats_update() | ... > > | spin_lock local CPU#0 <--+ ovs_flow_stats_update() > > +---------------------------------- spin_lock local CPU#1 > > > > This patch disables BH for both cases fixing the deadlocks. > > This bug is already fixed in OVS.
Could you point me to the commit? I am not finding anything recent. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev