bridge: simplify br_getlink() a bit
Subsystems (4)
PATCH 1/1 bridge: simplify br_getlink() a bit
Static checkers complain that we should maybe set "ret" before we do the "goto out;". They interpret the NULL return from br_port_get_rtnl() as a failure and forgetting to set the error code is a common bug in this situation.
The code is confusing but it's actually correct. We are returning zero deliberately. Let's re-write it a bit to be more clear.
net/bridge/br_netlink.c +3 -6
@@ -311,17 +311,14 @@ errout:int br_getlink (struct sk_buff *skb,u32 pid,u32 seq,struct net_device *dev,u32 filter_mask) { -int err =0 ;struct net_bridge_port *port =br_port_get_rtnl (dev);if (!port && !(filter_mask &RTEXT_FILTER_BRVLAN ) && !(filter_mask &RTEXT_FILTER_BRVLAN_COMPRESSED )) - goto out; +return 0 ; - err =br_fill_ifinfo (skb, port, pid, seq,RTM_NEWLINK ,NLM_F_MULTI , - filter_mask, dev); -out: -return err; +return br_fill_ifinfo (skb, port, pid, seq,RTM_NEWLINK ,NLM_F_MULTI , + filter_mask, dev); } static int br_vlan_info(struct net_bridge *br, struct net_bridge_port *p,
Quoted 25 lines · On Wed, 21 Jan 2015 12:22:35 +0300 Dan Carpenter <[email protected]>…
Static checkers complain that we should maybe set "ret" before we do the "goto out;". They interpret the NULL return from
br_port_get_rtnl()as a failure and forgetting to set the error code is a common bug in this situation.The code is confusing but it's actually correct. We are returning zero deliberately. Let's re-write it a bit to be more clear.
Signed-off-by Dan Carpenter <[email protected]>net/bridge/br_netlink.c +1
-2@@ -311,17 +311,14 @@ errout:int br_getlink (struct sk_buff *skb,u32 pid,u32 seq,struct net_device *dev,u32 filter_mask) { -int err =0 ;struct net_bridge_port *port =br_port_get_rtnl (dev);if (!port && !(filter_mask &RTEXT_FILTER_BRVLAN ) && !(filter_mask &RTEXT_FILTER_BRVLAN_COMPRESSED )) - goto out; +return 0 ;
net/bridge/br_netlink.c errout: · line 324
Quoted 10 lines
net/bridge/br_netlink.c +2
-4- err =br_fill_ifinfo (skb, port, pid, seq,RTM_NEWLINK ,NLM_F_MULTI , - filter_mask, dev); -out: -return err; +return br_fill_ifinfo (skb, port, pid, seq,RTM_NEWLINK ,NLM_F_MULTI , + filter_mask, dev); } static int br_vlan_info(struct net_bridge *br, struct net_bridge_port *p,
That looks fine.
From: Dan Carpenter <[email protected]>
Date: Wed, 21 Jan 2015 12:22:35 +0300
Quoted 9 lines
Static checkers complain that we should maybe set "ret" before we do the "goto out;". They interpret the NULL return from
br_port_get_rtnl()as a failure and forgetting to set the error code is a common bug in this situation.The code is confusing but it's actually correct. We are returning zero deliberately. Let's re-write it a bit to be more clear.
Signed-off-by Dan Carpenter <[email protected]>
Applied to net-next, thanks.