[ovs-dev] [PATCH] rconn: Avoid memory leak in rconn_send_with_limit() on queue overflow.
Ben Pfaff
blp at nicira.com
Fri Jan 4 21:48:54 UTC 2013
Bug #14357.
Reported-by: Luca Giraudo <lgiraudo at nicira.com>
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
This leak has been around forever. I expect to backport it all the
way to 1.4.
lib/rconn.c | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/lib/rconn.c b/lib/rconn.c
index 1ea022b..2049a90 100644
--- a/lib/rconn.c
+++ b/lib/rconn.c
@@ -649,14 +649,13 @@ int
rconn_send_with_limit(struct rconn *rc, struct ofpbuf *b,
struct rconn_packet_counter *counter, int queue_limit)
{
- int retval;
- retval = (counter->n_packets >= queue_limit
- ? EAGAIN
- : rconn_send(rc, b, counter));
- if (retval) {
+ if (counter->n_packets < queue_limit) {
+ return rconn_send(rc, b, counter);
+ } else {
COVERAGE_INC(rconn_overflow);
+ ofpbuf_delete(b);
+ return EAGAIN;
}
- return retval;
}
/* Returns the total number of packets successfully sent on the underlying
--
1.7.2.5
More information about the dev
mailing list