All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hangbin Liu <hangbin.liu@linux.dev>
To: Kalpesh Solanki <skalpesh942@gmail.com>
Cc: Jay Vosburgh <jv@jvosburgh.net>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	Oliver Hartkopp <socketcan@hartkopp.net>,
	Jiale Yao <yaojiale02@163.com>
Subject: Re: [PATCH] bonding: reject IEEE 802.15.4 and 6LoWPAN devices in bond_enslave
Date: Fri, 13 Nov 2026 10:44:09 +0800	[thread overview]
Message-ID: <avZ5eZLRKVgdc_7D@fedora> (raw)
In-Reply-To: <20261112130833.233208-1-skalpesh942@gmail.com>

On Thu, Nov 12, 2026 at 06:38:33PM +0530, Kalpesh Solanki wrote:
> When the first non-Ethernet slave is enslaved to a bond,
> bond_setup_by_slave() copies slave_dev->type to the bond device.
> However, the bonding driver does not set up subsystem-specific
> mid-layer contexts or private structures:
> 
> 1. IEEE 802.15.4 routines (such as ieee802154_llsec_dump_table(),
>    nl-phy.c, and socket callbacks) identify WPAN devices by dev->type
>    alone and unconditionally dereference dev->ieee802154_ptr and
>    dev->ml_priv (ieee802154_mlme_ops). Because bonding never allocates
>    these, this results in a NULL pointer dereference.
> 
> 2. The 6LoWPAN netdevice notifier (lowpan_event()) identifies devices
>    by dev->type == ARPHRD_6LOWPAN and treats netdev_priv(dev) as
>    struct lowpan_dev. On a bond master, netdev_priv() is struct bonding,
>    so writes to lowpan_dev(dev)->ctx.table flags on events like
>    NETDEV_DOWN corrupt the bonding driver's private state.
> 
> The team driver closed an identical gap in commit 9043be310c6a ("team:
> reject CAN, IEEE 802.15.4 and 6LoWPAN devices in team_port_add"). Bonding
> previously only blocked CAN devices in commit 8ba68464e478 ("bonding:
> refuse to enslave CAN devices").
> 
> Reject ARPHRD_IEEE802154, ARPHRD_IEEE802154_MONITOR, and ARPHRD_6LOWPAN
> devices in bond_enslave().
> 
> Fixes: 8ba68464e478 ("bonding: refuse to enslave CAN devices")

Nit: I’m a bit wondering whether we should use this fix tag.
The issue exists both before and after this commit.

On the positive side, the tag can notify users to backport this
patch if they also carry 8ba68464e478.

Since this is not a regression, it should probably target net-next.

> Signed-off-by: Kalpesh Solanki <skalpesh942@gmail.com>
> ---
>  drivers/net/bonding/bond_main.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
> index 7019e5d8fdc..b3b003e39b2 100644
> --- a/drivers/net/bonding/bond_main.c
> +++ b/drivers/net/bonding/bond_main.c
> @@ -1894,9 +1894,12 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
>  	struct sockaddr_storage ss;
>  	int res = 0, i;
>  
> -	if (slave_dev->type == ARPHRD_CAN) {
> +	if (slave_dev->type == ARPHRD_CAN ||
> +	    slave_dev->type == ARPHRD_IEEE802154 ||
> +	    slave_dev->type == ARPHRD_IEEE802154_MONITOR ||
> +	    slave_dev->type == ARPHRD_6LOWPAN) {
>  		BOND_NL_ERR(bond_dev, extack,
> -			    "CAN devices cannot be enslaved");
> +			    "CAN, IEEE 802.15.4 and 6LoWPAN devices cannot be enslaved");
>  		return -EPERM;
>  	}
>  
> -- 
> 2.53.0
> 

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

      parent reply	other threads:[~2026-11-13  2:44 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-12 13:08 [PATCH] bonding: reject IEEE 802.15.4 and 6LoWPAN devices in bond_enslave Kalpesh Solanki
2026-11-12 13:10 ` netdev-bot+sinfo
2026-11-12 13:20   ` KALPESH SOLANKI
2026-11-12 13:32 ` Oliver Hartkopp
2026-11-13  2:44 ` 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=avZ5eZLRKVgdc_7D@fedora \
    --to=hangbin.liu@linux.dev \
    --cc=jv@jvosburgh.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=skalpesh942@gmail.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.