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