mirror of https://gitee.com/openkylin/linux.git
bridge: add missing bridge port check for offloads
This patch fixes a missing bridge port check caught by smatch. setlink/dellink of attributes like vlans can come for a bridge device and there is no need to offload those today. So, this patch adds a bridge port check. (In these cases however, the BRIDGE_SELF flags will always be set and we may not hit a problem with the current code). smatch complaint: The patch 68e331c785b8: "bridge: offload bridge port attributes to switch asic if feature flag set" from Jan 29, 2015, leads to the following Smatch complaint: net/bridge/br_netlink.c:552 br_setlink() error: we previously assumed 'p' could be null (see line 518) net/bridge/br_netlink.c 517 518 if (p && protinfo) { ^ Check for NULL. Reported-By: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d78f802f18
commit
1fd0bddb61
|
@ -543,7 +543,7 @@ int br_setlink(struct net_device *dev, struct nlmsghdr *nlh, u16 flags)
|
|||
afspec, RTM_SETLINK);
|
||||
}
|
||||
|
||||
if (!(flags & BRIDGE_FLAGS_SELF)) {
|
||||
if (p && !(flags & BRIDGE_FLAGS_SELF)) {
|
||||
/* set bridge attributes in hardware if supported
|
||||
*/
|
||||
ret_offload = netdev_switch_port_bridge_setlink(dev, nlh,
|
||||
|
@ -583,7 +583,7 @@ int br_dellink(struct net_device *dev, struct nlmsghdr *nlh, u16 flags)
|
|||
*/
|
||||
br_ifinfo_notify(RTM_NEWLINK, p);
|
||||
|
||||
if (!(flags & BRIDGE_FLAGS_SELF)) {
|
||||
if (p && !(flags & BRIDGE_FLAGS_SELF)) {
|
||||
/* del bridge attributes in hardware
|
||||
*/
|
||||
ret_offload = netdev_switch_port_bridge_dellink(dev, nlh,
|
||||
|
|
Loading…
Reference in New Issue