git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ofproto: Fix potential leak during flow mods.
[sliver-openvswitch.git]
/
lib
/
lacp.c
diff --git
a/lib/lacp.c
b/lib/lacp.c
index
a3f72ed
..
49ae5e5
100644
(file)
--- a/
lib/lacp.c
+++ b/
lib/lacp.c
@@
-1,4
+1,4
@@
-/* Copyright (c) 2011, 2012, 2013 Nicira, Inc.
+/* Copyright (c) 2011, 2012, 2013
, 2014
Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-181,7
+181,8
@@
parse_lacp_packet(const struct ofpbuf *b)
{
const struct lacp_pdu *pdu;
{
const struct lacp_pdu *pdu;
- pdu = ofpbuf_at(b, (uint8_t *)b->l3 - (uint8_t *)b->data, LACP_PDU_LEN);
+ pdu = ofpbuf_at(b, (uint8_t *)ofpbuf_l3(b) - (uint8_t *)ofpbuf_data(b),
+ LACP_PDU_LEN);
if (pdu && pdu->subtype == 1
&& pdu->actor_type == 1 && pdu->actor_len == 20
if (pdu && pdu->subtype == 1
&& pdu->actor_type == 1 && pdu->actor_len == 20
@@
-249,7
+250,6
@@
lacp_unref(struct lacp *lacp) OVS_EXCLUDED(mutex)
hmap_destroy(&lacp->slaves);
list_remove(&lacp->node);
free(lacp->name);
hmap_destroy(&lacp->slaves);
list_remove(&lacp->node);
free(lacp->name);
- ovs_refcount_destroy(&lacp->ref_cnt);
free(lacp);
ovs_mutex_unlock(&mutex);
}
free(lacp);
ovs_mutex_unlock(&mutex);
}
@@
-345,18
+345,18
@@
out:
enum lacp_status
lacp_status(const struct lacp *lacp) OVS_EXCLUDED(mutex)
{
enum lacp_status
lacp_status(const struct lacp *lacp) OVS_EXCLUDED(mutex)
{
- enum lacp_status ret;
+ if (lacp) {
+ enum lacp_status ret;
- ovs_mutex_lock(&mutex);
- if (!lacp) {
- ret = LACP_DISABLED;
- } else if (lacp->negotiated) {
- ret = LACP_NEGOTIATED;
+ ovs_mutex_lock(&mutex);
+ ret = lacp->negotiated ? LACP_NEGOTIATED : LACP_CONFIGURED;
+ ovs_mutex_unlock(&mutex);
+ return ret;
} else {
} else {
- ret = LACP_CONFIGURED;
+ /* Don't take 'mutex'. It might not even be initialized, since we
+ * don't know that any lacp object has been created. */
+ return LACP_DISABLED;
}
}
- ovs_mutex_unlock(&mutex);
- return ret;
}
/* Registers 'slave_' as subordinate to 'lacp'. This should be called at least
}
/* Registers 'slave_' as subordinate to 'lacp'. This should be called at least