Commit 9b46922e authored by Hong zhi guo's avatar Hong zhi guo Committed by David S. Miller

bridge: fix crash when set mac address of br interface

When I tried to set mac address of a bridge interface to a mac
address which already learned on this bridge, I got system hang.

The cause is straight forward: function br_fdb_change_mac_address
calls fdb_insert with NULL source nbp. Then an fdb lookup is
performed. If an fdb entry is found and it's local, it's OK. But
if it's not local, source is dereferenced for printk without NULL
check.
Signed-off-by: default avatarHong Zhiguo <honkiko@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4a7df340
...@@ -423,7 +423,7 @@ static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source, ...@@ -423,7 +423,7 @@ static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source,
return 0; return 0;
br_warn(br, "adding interface %s with same address " br_warn(br, "adding interface %s with same address "
"as a received packet\n", "as a received packet\n",
source->dev->name); source ? source->dev->name : br->dev->name);
fdb_delete(br, fdb); fdb_delete(br, fdb);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment