Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Roopa Prabhu and committed by
David S. Miller
1fd0bddb d78f802f

+2 -2
+2 -2
net/bridge/br_netlink.c
··· 543 543 afspec, RTM_SETLINK); 544 544 } 545 545 546 - if (!(flags & BRIDGE_FLAGS_SELF)) { 546 + if (p && !(flags & BRIDGE_FLAGS_SELF)) { 547 547 /* set bridge attributes in hardware if supported 548 548 */ 549 549 ret_offload = netdev_switch_port_bridge_setlink(dev, nlh, ··· 583 583 */ 584 584 br_ifinfo_notify(RTM_NEWLINK, p); 585 585 586 - if (!(flags & BRIDGE_FLAGS_SELF)) { 586 + if (p && !(flags & BRIDGE_FLAGS_SELF)) { 587 587 /* del bridge attributes in hardware 588 588 */ 589 589 ret_offload = netdev_switch_port_bridge_dellink(dev, nlh,