Commit f9371935 authored by Alexandru Tachici's avatar Alexandru Tachici Committed by Jakub Kicinski

net: ethernet: adi: adin1110: Add check in netdev_event

Check whether this driver actually is the intended recipient of
upper change event.

Fixes: bc93e19d ("net: ethernet: adi: Add ADIN1110 support")
Signed-off-by: default avatarAlexandru Tachici <alexandru.tachici@analog.com>
Link: https://lore.kernel.org/r/20221003111636.54973-1-alexandru.tachici@analog.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 229a0027
...@@ -1169,6 +1169,11 @@ static int adin1110_port_bridge_leave(struct adin1110_port_priv *port_priv, ...@@ -1169,6 +1169,11 @@ static int adin1110_port_bridge_leave(struct adin1110_port_priv *port_priv,
return ret; return ret;
} }
static bool adin1110_port_dev_check(const struct net_device *dev)
{
return dev->netdev_ops == &adin1110_netdev_ops;
}
static int adin1110_netdevice_event(struct notifier_block *unused, static int adin1110_netdevice_event(struct notifier_block *unused,
unsigned long event, void *ptr) unsigned long event, void *ptr)
{ {
...@@ -1177,6 +1182,9 @@ static int adin1110_netdevice_event(struct notifier_block *unused, ...@@ -1177,6 +1182,9 @@ static int adin1110_netdevice_event(struct notifier_block *unused,
struct netdev_notifier_changeupper_info *info = ptr; struct netdev_notifier_changeupper_info *info = ptr;
int ret = 0; int ret = 0;
if (!adin1110_port_dev_check(dev))
return NOTIFY_DONE;
switch (event) { switch (event) {
case NETDEV_CHANGEUPPER: case NETDEV_CHANGEUPPER:
if (netif_is_bridge_master(info->upper_dev)) { if (netif_is_bridge_master(info->upper_dev)) {
...@@ -1202,11 +1210,6 @@ static void adin1110_disconnect_phy(void *data) ...@@ -1202,11 +1210,6 @@ static void adin1110_disconnect_phy(void *data)
phy_disconnect(data); phy_disconnect(data);
} }
static bool adin1110_port_dev_check(const struct net_device *dev)
{
return dev->netdev_ops == &adin1110_netdev_ops;
}
static int adin1110_port_set_forwarding_state(struct adin1110_port_priv *port_priv) static int adin1110_port_set_forwarding_state(struct adin1110_port_priv *port_priv)
{ {
struct adin1110_priv *priv = port_priv->priv; struct adin1110_priv *priv = port_priv->priv;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment