> 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_
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
>
>
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
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