[ovs-dev] [PATCH] ofproto-dpif: Fix GCC warning.
Ben Pfaff
blp at nicira.com
Mon Jan 2 20:47:24 UTC 2012
Fair enough. I added a comment and pushed.
On Thu, Dec 29, 2011 at 12:10:41AM -0600, Justin Pettit wrote:
> Ben, do you think it's worth putting a small comment above the assignment? Otherwise, it looks kind of odd.
>
> --Justin
>
>
> On Dec 28, 2011, at 10:50 PM, Ethan Jackson wrote:
>
> > Looks good.
> >
> > Ethan
> >
> > On Tue, Dec 27, 2011 at 14:32, Ben Pfaff <blp at nicira.com> wrote:
> >> gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48) warned:
> >>
> >> ofproto/ofproto-dpif.c: In function 'bundle_send_learning_packets':
> >> ofproto/ofproto-dpif.c:1835: warning: dereferencing type-punned pointer
> >> will break strict-aliasing rules
> >>
> >> I agree that its analysis matches what the C standard says. This commit
> >> fixes the problem and avoids the warning.
> >>
> >> The assignment to 'port' isn't actually necessary. I included it because
> >> I like to have a variable with the correct type near the use of that type
> >> through a "void *". Then "grep" for that type is more effective, and the
> >> compiler will be able to diagnose any later change to (in this case) the
> >> type of the first parameter to send_packet().
> >>
> >> Signed-off-by: Ben Pfaff <blp at nicira.com>
> >> ---
> >> ofproto/ofproto-dpif.c | 8 +++++---
> >> 1 files changed, 5 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> >> index 1eb0b82..004991b 100644
> >> --- a/ofproto/ofproto-dpif.c
> >> +++ b/ofproto/ofproto-dpif.c
> >> @@ -1828,11 +1828,13 @@ bundle_send_learning_packets(struct ofbundle *bundle)
> >> if (e->port.p != bundle) {
> >> struct ofpbuf *learning_packet;
> >> struct ofport_dpif *port;
> >> + void *port_void;
> >> int ret;
> >>
> >> - learning_packet = bond_compose_learning_packet(bundle->bond, e->mac,
> >> - e->vlan,
> >> - (void **)&port);
> >> + learning_packet = bond_compose_learning_packet(bundle->bond,
> >> + e->mac, e->vlan,
> >> + &port_void);
> >> + port = port_void;
> >> ret = send_packet(port, learning_packet);
> >> ofpbuf_delete(learning_packet);
> >> if (ret) {
> >> --
> >> 1.7.2.5
> >>
> >> _______________________________________________
> >> dev mailing list
> >> dev at openvswitch.org
> >> http://openvswitch.org/mailman/listinfo/dev
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list