diff options
author | Scott Feldman <sfeldma@gmail.com> | 2015-06-11 11:19:01 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-06-11 19:27:09 -0400 |
commit | 57225e7720ac3d7ffcb0086c716753abf6e54e8d (patch) | |
tree | 9ebdc1f6899baf7496a8907323a6ae9e55cc390f /net/switchdev/switchdev.c | |
parent | d0504f4d8fc4618ee0d6f8124a10da0a007ff347 (diff) |
switchdev: fix BUG when port driver doesn't support set attr op
Fix a BUG_ON() where CONFIG_NET_SWITCHDEV is set but the driver for a
bridged port does not support switchdev_port_attr_set op. Don't BUG_ON()
if -EOPNOTSUPP is returned.
Also change BUG_ON() to netdev_err since this is a normal error path and
does not warrant the use of BUG_ON(), which is reserved for unrecoverable
errs.
Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Reported-by: Brenden Blanco <bblanco@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/switchdev/switchdev.c')
-rw-r--r-- | net/switchdev/switchdev.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c index b683e89b4caa..658bc3ac8008 100644 --- a/net/switchdev/switchdev.c +++ b/net/switchdev/switchdev.c | |||
@@ -103,7 +103,9 @@ static void switchdev_port_attr_set_work(struct work_struct *work) | |||
103 | 103 | ||
104 | rtnl_lock(); | 104 | rtnl_lock(); |
105 | err = switchdev_port_attr_set(asw->dev, &asw->attr); | 105 | err = switchdev_port_attr_set(asw->dev, &asw->attr); |
106 | BUG_ON(err); | 106 | if (err && err != -EOPNOTSUPP) |
107 | netdev_err(asw->dev, "failed (err=%d) to set attribute (id=%d)\n", | ||
108 | err, asw->attr.id); | ||
107 | rtnl_unlock(); | 109 | rtnl_unlock(); |
108 | 110 | ||
109 | dev_put(asw->dev); | 111 | dev_put(asw->dev); |