mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
dpif-linux: Fix segfault when a port already exists.
Commit 78a2d59c
(dpif-linux.c: Let the kernel pick a port number if one
not requested.) changed the logic for port assignment, but didn't
properly handle some error conditions. An attempt to add a tunnel port
that already exists would lead to a segfault. This commit fixes the
logic to stop processing and return an error.
Reported-by: Gurucharan Shetty <shettyg@nicira.com>
Signed-off-by: Justin Pettit <jpettit@nicira.com>
This commit is contained in:
@@ -474,9 +474,11 @@ dpif_linux_port_add(struct dpif *dpif_, struct netdev *netdev,
|
||||
*port_nop = reply.port_no;
|
||||
VLOG_DBG("%s: assigning port %"PRIu32" to netlink pid %"PRIu32,
|
||||
dpif_name(dpif_), reply.port_no, upcall_pid);
|
||||
} else if (error == EBUSY && *port_nop != UINT32_MAX) {
|
||||
} else {
|
||||
if (error == EBUSY && *port_nop != UINT32_MAX) {
|
||||
VLOG_INFO("%s: requested port %"PRIu32" is in use",
|
||||
dpif_name(dpif_), *port_nop);
|
||||
}
|
||||
nl_sock_destroy(sock);
|
||||
ofpbuf_delete(buf);
|
||||
return error;
|
||||
|
Reference in New Issue
Block a user