Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a0475be8 authored by Xin Long's avatar Xin Long Committed by Greg Kroah-Hartman
Browse files

team: fix netconsole setup over team




[ Upstream commit 9cf2f437ca5b39828984064fad213e68fc17ef11 ]

The same fix in Commit dbe17307 ("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: 0fb52a27 ("team: cleanup netpoll clode")
Reported-by: default avatarJoão Avelino Bellomo Filho <jbellomo@redhat.com>
Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5ac746d5
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -1051,14 +1051,11 @@ static void team_port_leave(struct team *team, struct team_port *port)
}

#ifdef CONFIG_NET_POLL_CONTROLLER
static int team_port_enable_netpoll(struct team *team, struct team_port *port)
static int __team_port_enable_netpoll(struct team_port *port)
{
	struct netpoll *np;
	int err;

	if (!team->dev->npinfo)
		return 0;

	np = kzalloc(sizeof(*np), GFP_KERNEL);
	if (!np)
		return -ENOMEM;
@@ -1072,6 +1069,14 @@ static int team_port_enable_netpoll(struct team *team, struct team_port *port)
	return err;
}

static int team_port_enable_netpoll(struct team_port *port)
{
	if (!port->team->dev->npinfo)
		return 0;

	return __team_port_enable_netpoll(port);
}

static void team_port_disable_netpoll(struct team_port *port)
{
	struct netpoll *np = port->np;
@@ -1086,7 +1091,7 @@ static void team_port_disable_netpoll(struct team_port *port)
	kfree(np);
}
#else
static int team_port_enable_netpoll(struct team *team, struct team_port *port)
static int team_port_enable_netpoll(struct team_port *port)
{
	return 0;
}
@@ -1193,7 +1198,7 @@ static int team_port_add(struct team *team, struct net_device *port_dev)
		goto err_vids_add;
	}

	err = team_port_enable_netpoll(team, port);
	err = team_port_enable_netpoll(port);
	if (err) {
		netdev_err(dev, "Failed to enable netpoll on device %s\n",
			   portname);
@@ -1898,7 +1903,7 @@ static int team_netpoll_setup(struct net_device *dev,

	mutex_lock(&team->lock);
	list_for_each_entry(port, &team->port_list, list) {
		err = team_port_enable_netpoll(team, port);
		err = __team_port_enable_netpoll(port);
		if (err) {
			__team_netpoll_cleanup(team);
			break;