On 01/03/2016 09:10, "Kavanagh, Mark B" <mark.b.kavan...@intel.com> wrote:
>Hi Daniele, > >One trivial comment below, but other than that, LGTM. > >Cheers, >Mark > >> >>This fixes multiple error path mistakes in do_add_port, none of which >>has been a problem in practice so far. This change will make it easier >>for a following commit to return in case of error. >> >>Also, this removes an unneeded special case for tunnel ports. >> >>Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com> >>--- >> lib/dpif-netdev.c | 50 >>+++++++++++++++++++++++++++----------------------- >> 1 file changed, 27 insertions(+), 23 deletions(-) >> >>diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c >>index a7e224a..914579d 100644 >>--- a/lib/dpif-netdev.c >>+++ b/lib/dpif-netdev.c >>@@ -1106,27 +1106,28 @@ do_add_port(struct dp_netdev *dp, const char >>*devname, const char >>*type, >> struct netdev *netdev; >> enum netdev_flags flags; >> const char *open_type; >>- int error; >>- int i; >>+ int error = 0; >>+ int i, n_open_rxqs; >> >> /* Reject devices already in 'dp'. */ >> if (!get_port_by_name(dp, devname, &port)) { >>- return EEXIST; >>+ error = EEXIST; >>+ goto out; >> } >> >> /* Open and validate network device. */ >> open_type = dpif_netdev_port_open_type(dp->class, type); >> error = netdev_open(devname, open_type, &netdev); >> if (error) { >>- return error; >>+ goto out; >> } >> /* XXX reject non-Ethernet devices */ >> >> netdev_get_flags(netdev, &flags); >> if (flags & NETDEV_LOOPBACK) { >> VLOG_ERR("%s: cannot add a loopback device", devname); >>- netdev_close(netdev); >>- return EINVAL; >>+ error = EINVAL; >>+ goto out_close; >> } >> >> if (netdev_is_pmd(netdev)) { >>@@ -1134,7 +1135,8 @@ do_add_port(struct dp_netdev *dp, const char >>*devname, const char >>*type, >> >> if (n_cores == OVS_CORE_UNSPEC) { >> VLOG_ERR("%s, cannot get cpu core info", devname); >>- return ENOENT; >>+ error = ENOENT; >>+ goto out_close; >> } >> /* There can only be ovs_numa_get_n_cores() pmd threads, >> * so creates a txq for each, and one extra for the non >>@@ -1143,7 +1145,7 @@ do_add_port(struct dp_netdev *dp, const char >>*devname, const char >>*type, >> netdev_requested_n_rxq(netdev)); >> if (error && (error != EOPNOTSUPP)) { >> VLOG_ERR("%s, cannot set multiq", devname); >>- return errno; >>+ goto out_close; >> } >> } >> port = xzalloc(sizeof *port); >>@@ -1152,30 +1154,20 @@ do_add_port(struct dp_netdev *dp, const char >>*devname, const char >>*type, >> port->rxq = xmalloc(sizeof *port->rxq * netdev_n_rxq(netdev)); >> port->type = xstrdup(type); >> port->latest_requested_n_rxq = netdev_requested_n_rxq(netdev); >>+ n_open_rxqs = 0; > >You could just initialize n_open_rxqs in its declaration, but no biggie. Good point, done _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev