mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
dpif-linux: Fix theoretical memory leak on error path.
If a notification is bigger than 4 kB (I doubt it one would be), then the lack of ofpbuf_uninit() would cause a memory leak. Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -799,19 +799,21 @@ dpif_linux_port_poll(const struct dpif *dpif_, char **devnamep)
|
||||
VLOG_DBG("port_changed: dpif:%s vport:%s cmd:%"PRIu8,
|
||||
dpif->dpif.full_name, vport.name, vport.cmd);
|
||||
*devnamep = xstrdup(vport.name);
|
||||
ofpbuf_uninit(&buf);
|
||||
return 0;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} else if (error == EAGAIN) {
|
||||
return EAGAIN;
|
||||
} else if (error != EAGAIN) {
|
||||
VLOG_WARN_RL(&rl, "error reading or parsing netlink (%s)",
|
||||
ovs_strerror(error));
|
||||
nl_sock_drain(dpif->port_notifier);
|
||||
error = ENOBUFS;
|
||||
}
|
||||
|
||||
VLOG_WARN_RL(&rl, "error reading or parsing netlink (%s)",
|
||||
ovs_strerror(error));
|
||||
nl_sock_drain(dpif->port_notifier);
|
||||
return ENOBUFS;
|
||||
ofpbuf_uninit(&buf);
|
||||
if (error) {
|
||||
return error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user