Now when netconsole sets up netpoll on a team dev, __netpoll_setup will invoke team dev's .ndo_netpoll_setup first, then set team->dev->npinfo.
However Commit 0fb52a27a04a ("team: cleanup netpoll clode") added !team->dev->npinfo check in team_port_enable_netpoll(), which is also invoked by team dev's .ndo_netpoll_setup. It will cause that port dev npinfo can't be set due to team->dev->npinfo is not yet set before invoking team dev's .ndo_netpoll_setup. Team dev only needs to check team->dev->npinfo for setting a port dev npinfo when adding the port, like before that cleanup. Fixes: 0fb52a27a04a ("team: cleanup netpoll clode") Reported-by: João Avelino Bellomo Filho <jbell...@redhat.com> Signed-off-by: Xin Long <lucien....@gmail.com> --- drivers/net/team/team.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index acbe849..f4a0346 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c @@ -1077,9 +1077,6 @@ static int team_port_enable_netpoll(struct team *team, 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; @@ -1221,11 +1218,13 @@ static int team_port_add(struct team *team, struct net_device *port_dev, goto err_vids_add; } - err = team_port_enable_netpoll(team, port); - if (err) { - netdev_err(dev, "Failed to enable netpoll on device %s\n", - portname); - goto err_enable_netpoll; + if (team->dev->npinfo) { + err = team_port_enable_netpoll(team, port); + if (err) { + netdev_err(dev, "Failed to enable netpoll on device %s\n", + portname); + goto err_enable_netpoll; + } } if (!(dev->features & NETIF_F_LRO)) -- 2.1.0