aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXin Long <lucien.xin@gmail.com>2018-04-24 02:33:37 -0400
committerDavid S. Miller <davem@davemloft.net>2018-04-24 09:36:21 -0400
commit9cf2f437ca5b39828984064fad213e68fc17ef11 (patch)
tree8154f3f53831411e20ca9eb2c51ab11a6a48728f
parent6cd968f4481437e6a8194b5e028000310ffe5ce2 (diff)
team: fix netconsole setup over team
The same fix in Commit dbe173079ab5 ("bridge: fix netconsole setup over bridge") is also needed for team driver. While at it, remove the unnecessary parameter *team from team_port_enable_netpoll(). v1->v2: - fix it in a better way, as does bridge. Fixes: 0fb52a27a04a ("team: cleanup netpoll clode") Reported-by: João Avelino Bellomo Filho <jbellomo@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/team/team.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index acbe84967834..ddb6bf85a59c 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1072,14 +1072,11 @@ static void team_port_leave(struct team *team, struct team_port *port)
1072} 1072}
1073 1073
1074#ifdef CONFIG_NET_POLL_CONTROLLER 1074#ifdef CONFIG_NET_POLL_CONTROLLER
1075static int team_port_enable_netpoll(struct team *team, struct team_port *port) 1075static int __team_port_enable_netpoll(struct team_port *port)
1076{ 1076{
1077 struct netpoll *np; 1077 struct netpoll *np;
1078 int err; 1078 int err;
1079 1079
1080 if (!team->dev->npinfo)
1081 return 0;
1082
1083 np = kzalloc(sizeof(*np), GFP_KERNEL); 1080 np = kzalloc(sizeof(*np), GFP_KERNEL);
1084 if (!np) 1081 if (!np)
1085 return -ENOMEM; 1082 return -ENOMEM;
@@ -1093,6 +1090,14 @@ static int team_port_enable_netpoll(struct team *team, struct team_port *port)
1093 return err; 1090 return err;
1094} 1091}
1095 1092
1093static int team_port_enable_netpoll(struct team_port *port)
1094{
1095 if (!port->team->dev->npinfo)
1096 return 0;
1097
1098 return __team_port_enable_netpoll(port);
1099}
1100
1096static void team_port_disable_netpoll(struct team_port *port) 1101static void team_port_disable_netpoll(struct team_port *port)
1097{ 1102{
1098 struct netpoll *np = port->np; 1103 struct netpoll *np = port->np;
@@ -1107,7 +1112,7 @@ static void team_port_disable_netpoll(struct team_port *port)
1107 kfree(np); 1112 kfree(np);
1108} 1113}
1109#else 1114#else
1110static int team_port_enable_netpoll(struct team *team, struct team_port *port) 1115static int team_port_enable_netpoll(struct team_port *port)
1111{ 1116{
1112 return 0; 1117 return 0;
1113} 1118}
@@ -1221,7 +1226,7 @@ static int team_port_add(struct team *team, struct net_device *port_dev,
1221 goto err_vids_add; 1226 goto err_vids_add;
1222 } 1227 }
1223 1228
1224 err = team_port_enable_netpoll(team, port); 1229 err = team_port_enable_netpoll(port);
1225 if (err) { 1230 if (err) {
1226 netdev_err(dev, "Failed to enable netpoll on device %s\n", 1231 netdev_err(dev, "Failed to enable netpoll on device %s\n",
1227 portname); 1232 portname);
@@ -1918,7 +1923,7 @@ static int team_netpoll_setup(struct net_device *dev,
1918 1923
1919 mutex_lock(&team->lock); 1924 mutex_lock(&team->lock);
1920 list_for_each_entry(port, &team->port_list, list) { 1925 list_for_each_entry(port, &team->port_list, list) {
1921 err = team_port_enable_netpoll(team, port); 1926 err = __team_port_enable_netpoll(port);
1922 if (err) { 1927 if (err) {
1923 __team_netpoll_cleanup(team); 1928 __team_netpoll_cleanup(team);
1924 break; 1929 break;