Re: [PATCH net v2] team: fix null-ptr-deref when team device type is changed

From: Hangbin Liu
Date: Tue Sep 05 2023 - 12:21:03 EST


On Tue, Sep 05, 2023 at 03:46:38PM +0800, Ziyang Xuan wrote:
> diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
> index d3dc22509ea5..12fb5f4cff06 100644
> --- a/drivers/net/team/team.c
> +++ b/drivers/net/team/team.c
> @@ -2127,7 +2127,10 @@ static const struct ethtool_ops team_ethtool_ops = {
> static void team_setup_by_port(struct net_device *dev,
> struct net_device *port_dev)
> {
> - dev->header_ops = port_dev->header_ops;
> + if (port_dev->type == ARPHRD_ETHER)
> + dev->header_ops = &eth_header_ops;
> + else
> + dev->header_ops = port_dev->header_ops;
> dev->type = port_dev->type;
> dev->hard_header_len = port_dev->hard_header_len;
> dev->needed_headroom = port_dev->needed_headroom;

Hmm.. Do we need to export eth_header_ops? I got error like
ERROR: modpost: "eth_header_ops" [drivers/net/team/team.ko] undefined!

But I saw function loopback_setup() could reference this. Not sure what
I missed here.

Thanks
Hangbin