From: Scott Feldman Date: Thu, 11 Jun 2015 15:19:01 +0000 (-0700) Subject: switchdev: fix BUG when port driver doesn't support set attr op X-Git-Tag: firefly_0821_release~176^2~1587^2~77 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=57225e7720ac3d7ffcb0086c716753abf6e54e8d;p=firefly-linux-kernel-4.4.55.git 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 Reported-by: Brenden Blanco Signed-off-by: David S. Miller --- 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) rtnl_lock(); err = switchdev_port_attr_set(asw->dev, &asw->attr); - BUG_ON(err); + if (err && err != -EOPNOTSUPP) + netdev_err(asw->dev, "failed (err=%d) to set attribute (id=%d)\n", + err, asw->attr.id); rtnl_unlock(); dev_put(asw->dev);