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 <b...@nicira.com> --- lib/dpif-linux.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 27c622a..1b97410 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -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; + } } } -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev