On Thu, Sep 15, 2011 at 05:50:16PM -0700, Jesse Gross wrote:
> It's possible to start receiving packets on a datapath as soon as
> the internal device is created.  It's therefore important that the
> datapath be fully initialized before this, which it currently isn't.
> In particularly, the fact that dp->stats_percpu is not yet set is
> potentially fatal.  In addition, if allocation of the Netlink response
> failed it would leak the percpu memory.  This fixes both problems.
> 
> Found by code inspection, in practice the datapath is probably always
> done initializing before someone can send a packet on it.
> 
> Signed-off-by: Jesse Gross <je...@nicira.com>

This patch is not exactly a thing of beauty.  Use of
smp_mb__before_clear_bit() to protect dp_ifindex seems very much an
implementation detail that could change without us noticing.

'dp_ifindex' is never used in the fast path, only in Netlink handling
and in the slow path that sends packets that miss up to userspace.  We
could get rid of dp_ifindex, replacing it by a function that obtains
the ifindex from vport numbered OVSP_LOCAL or returns 0 if there isn't
one (which could only happen in the slow path).  When the slow path
sees a return value of 0, it would just drop the packet.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to