datapath: Fully initialize datapath before local port.
authorJesse Gross <jesse@nicira.com>
Thu, 15 Sep 2011 23:41:36 +0000 (16:41 -0700)
committerJesse Gross <jesse@nicira.com>
Tue, 20 Sep 2011 17:34:42 +0000 (10:34 -0700)
commit99769a40d9d5769c94ae3520112d86c56cbb7322
tree435ff386b32f0ef15f5fd2d5b644ef59392cf72e
parent5721c788f25dda3be1b281331db262f6806ab35e
datapath: Fully initialize datapath before local port.

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 particular, 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 <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/datapath.c
datapath/datapath.h