Re: [ovs-dev] [PATCH] dpif-netdev: Wait for threads to quiesce before freeing port.

2015-03-25 Thread Daniele Di Proietto
> On 24 Mar 2015, at 17:03, Ben Pfaff wrote: > > I haven't looked at the code yet, but one restriction on > ovsrcu_synchronize() is that the current thread can't have active > pointers to any RCU-protected data (they can get freed). Is that safe > here? > There’s one point where we call port_

Re: [ovs-dev] [PATCH] dpif-netdev: Wait for threads to quiesce before freeing port.

2015-03-24 Thread Ben Pfaff
I haven't looked at the code yet, but one restriction on ovsrcu_synchronize() is that the current thread can't have active pointers to any RCU-protected data (they can get freed). Is that safe here? On Thu, Mar 19, 2015 at 01:43:54PM -0700, Jarno Rajahalme wrote: > Acked-by: Jarno Rajahalme > >

Re: [ovs-dev] [PATCH] dpif-netdev: Wait for threads to quiesce before freeing port.

2015-03-19 Thread Jarno Rajahalme
Acked-by: Jarno Rajahalme Ben may also want to have a look, as commits 98de6bebb (dpif-netdev: Fix another use-after-free in port_unref().) and 87400a3d4cc4a (dpif-netdev: Fix use-after-free in port_unref().) by him have fixed earlier problems related to this. I did not check the changes in th

[ovs-dev] [PATCH] dpif-netdev: Wait for threads to quiesce before freeing port.

2015-03-19 Thread Daniele Di Proietto
port_unref() shouldn't immediately free the port and close the netdev, because otherwise threads that still have a pointer to the port would crash. This commit fixes the problem by introducing an ovsrcu_synchronize() call in port_unref(). I chose not to use ovsrcu_postpone(), because postponing t