All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hangbin Liu <hangbin.liu@linux.dev>
To: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Jiri Pirko <jiri@resnulli.us>,
	netdev@vger.kernel.org, Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Jiale Yao <yaojiale02@163.com>
Subject: Re: [PATCH net v4] team: reject CAN, IEEE 802.15.4 and 6LoWPAN devices in team_port_add
Date: Fri, 16 Oct 2026 10:26:05 +0800	[thread overview]
Message-ID: <atGLPSTSfWiR90c8@fedora> (raw)
In-Reply-To: <20261014143309.284388-1-socketcan@hartkopp.net>

On Wed, Oct 14, 2026 at 04:33:09PM +0200, Oliver Hartkopp wrote:
> From: Jiale Yao <yaojiale02@163.com>
> 
> When the first port has a non-Ethernet type, team_setup_by_port()
> copies port_dev->type to the team device while netdev_priv() of the
> team device still holds a struct team. Several L2 stacks identify their
> devices by dev->type alone and then access type specific data that the
> team driver never sets up:
> 
> - CAN protocols rely on the CAN mid-layer private data (ml_priv)
> - IEEE 802.15.4 code dereferences ieee802154_ptr and the mlme ops in
>   ml_priv
> - the 6LoWPAN netdev notifier writes through lowpan_dev(dev) on
>   NETDEV_DOWN and reads it on NETDEV_UP/NETDEV_CHANGE
> 
> Enslaving such a device (e.g. vxcan, wpan0, lowpan0) therefore leads to
> NULL pointer dereferences or to writes into struct team.
> 
> Reject ARPHRD_CAN, ARPHRD_IEEE802154, ARPHRD_IEEE802154_MONITOR and
> ARPHRD_6LOWPAN devices in team_port_add(). The bonding driver has
> rejected CAN devices since commit 8ba68464e478 ("bonding: refuse to
> enslave CAN devices").
> 
> Link: https://lore.kernel.org/all/b58d98e0-8fe3-4e4e-b8a5-c1c7e647ccca@hartkopp.net/
> Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
> Assisted-by: Claude:deepseek-v4-pro
> Signed-off-by: Jiale Yao <yaojiale02@163.com>
> Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
> ---
> v4: [Hartkopp] also reject ARPHRD_6LOWPAN as reported by Sashiko AI
>     review, reworded commit message (bonding only rejects CAN)
> v3: [Hartkopp] fixed indention and compilation as reported by kernel test robot
> ---
>  drivers/net/team/team_core.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/net/team/team_core.c b/drivers/net/team/team_core.c
> --- a/drivers/net/team/team_core.c
> +++ b/drivers/net/team/team_core.c
> @@ -1223,10 +1223,21 @@ static int team_port_add(struct team *team, struct net_device *port_dev,
>  		netdev_err(dev, "Device %s is loopback device. Loopback devices can't be added as a team port\n",
>  			   portname);
>  		return -EINVAL;
>  	}
> 
> +	if (port_dev->type == ARPHRD_CAN ||
> +	    port_dev->type == ARPHRD_IEEE802154 ||
> +	    port_dev->type == ARPHRD_IEEE802154_MONITOR ||
> +	    port_dev->type == ARPHRD_6LOWPAN) {
> +		NL_SET_ERR_MSG(extack,
> +			       "CAN, IEEE 802.15.4 and 6LoWPAN devices can't be added as a team port");
> +		netdev_err(dev, "Device %s is CAN, IEEE 802.15.4 or 6LoWPAN. These device types can't be added as a team port\n",
> +			   portname);
> +		return -EINVAL;
> +	}
> +
>  	if (netif_is_team_port(port_dev)) {
>  		NL_SET_ERR_MSG(extack, "Device is already a port of a team device");
>  		netdev_err(dev, "Device %s is already a port "
>  				"of a team device\n", portname);
>  		return -EBUSY;
> --
> 2.53.0
> 

Thanks for the followup.

Reviewed-by: Hangbin Liu <liuhangbin@kylinos.cn>

      parent reply	other threads:[~2026-10-16  2:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-14 14:33 [PATCH net v4] team: reject CAN, IEEE 802.15.4 and 6LoWPAN devices in team_port_add Oliver Hartkopp
2026-10-14 14:43 ` netdev-bot+sinfo
2026-10-14 14:57   ` Oliver Hartkopp
2026-10-16  2:26 ` Hangbin Liu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=atGLPSTSfWiR90c8@fedora \
    --to=hangbin.liu@linux.dev \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=socketcan@hartkopp.net \
    --cc=yaojiale02@163.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.