* [PATCH net] macvlan: Don't propagate promisc change to lower dev in passthru
@ 2023-11-14 17:59 Vlad Buslov
2023-11-15 7:16 ` Jiri Pirko
2023-11-16 10:29 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Vlad Buslov @ 2023-11-14 17:59 UTC (permalink / raw)
To: davem, kuba, pabeni, edumazet; +Cc: netdev, vyasevic, Vlad Buslov, Gal Pressman
Macvlan device in passthru mode sets its lower device promiscuous mode
according to its MACVLAN_FLAG_NOPROMISC flag instead of synchronizing it to
its own promiscuity setting. However, macvlan_change_rx_flags() function
doesn't check the mode before propagating such changes to the lower device
which can cause net_device->promiscuity counter overflow as illustrated by
reproduction example [0] and resulting dmesg log [1]. Fix the issue by
first verifying the mode in macvlan_change_rx_flags() function before
propagating promiscuous mode change to the lower device.
[0]:
ip link add macvlan1 link enp8s0f0 type macvlan mode passthru
ip link set macvlan1 promisc on
ip l set dev macvlan1 up
ip link set macvlan1 promisc off
ip l set dev macvlan1 down
ip l set dev macvlan1 up
[1]:
[ 5156.281724] macvlan1: entered promiscuous mode
[ 5156.285467] mlx5_core 0000:08:00.0 enp8s0f0: entered promiscuous mode
[ 5156.287639] macvlan1: left promiscuous mode
[ 5156.288339] mlx5_core 0000:08:00.0 enp8s0f0: left promiscuous mode
[ 5156.290907] mlx5_core 0000:08:00.0 enp8s0f0: entered promiscuous mode
[ 5156.317197] mlx5_core 0000:08:00.0 enp8s0f0: promiscuity touches roof, set promiscuity failed. promiscuity feature of device might be broken.
Fixes: efdbd2b30caa ("macvlan: Propagate promiscuity setting to lower devices.")
Reviewed-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
---
drivers/net/macvlan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 02bd201bc7e5..c8da94af4161 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -780,7 +780,7 @@ static void macvlan_change_rx_flags(struct net_device *dev, int change)
if (dev->flags & IFF_UP) {
if (change & IFF_ALLMULTI)
dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1);
- if (change & IFF_PROMISC)
+ if (!macvlan_passthru(vlan->port) && change & IFF_PROMISC)
dev_set_promiscuity(lowerdev,
dev->flags & IFF_PROMISC ? 1 : -1);
--
2.39.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net] macvlan: Don't propagate promisc change to lower dev in passthru
2023-11-14 17:59 [PATCH net] macvlan: Don't propagate promisc change to lower dev in passthru Vlad Buslov
@ 2023-11-15 7:16 ` Jiri Pirko
2023-11-16 10:29 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Jiri Pirko @ 2023-11-15 7:16 UTC (permalink / raw)
To: Vlad Buslov; +Cc: davem, kuba, pabeni, edumazet, netdev, vyasevic, Gal Pressman
Tue, Nov 14, 2023 at 06:59:15PM CET, vladbu@nvidia.com wrote:
>Macvlan device in passthru mode sets its lower device promiscuous mode
>according to its MACVLAN_FLAG_NOPROMISC flag instead of synchronizing it to
>its own promiscuity setting. However, macvlan_change_rx_flags() function
>doesn't check the mode before propagating such changes to the lower device
>which can cause net_device->promiscuity counter overflow as illustrated by
>reproduction example [0] and resulting dmesg log [1]. Fix the issue by
>first verifying the mode in macvlan_change_rx_flags() function before
>propagating promiscuous mode change to the lower device.
>
>[0]:
>ip link add macvlan1 link enp8s0f0 type macvlan mode passthru
>ip link set macvlan1 promisc on
>ip l set dev macvlan1 up
>ip link set macvlan1 promisc off
>ip l set dev macvlan1 down
>ip l set dev macvlan1 up
>
>[1]:
>[ 5156.281724] macvlan1: entered promiscuous mode
>[ 5156.285467] mlx5_core 0000:08:00.0 enp8s0f0: entered promiscuous mode
>[ 5156.287639] macvlan1: left promiscuous mode
>[ 5156.288339] mlx5_core 0000:08:00.0 enp8s0f0: left promiscuous mode
>[ 5156.290907] mlx5_core 0000:08:00.0 enp8s0f0: entered promiscuous mode
>[ 5156.317197] mlx5_core 0000:08:00.0 enp8s0f0: promiscuity touches roof, set promiscuity failed. promiscuity feature of device might be broken.
>
>Fixes: efdbd2b30caa ("macvlan: Propagate promiscuity setting to lower devices.")
>Reviewed-by: Gal Pressman <gal@nvidia.com>
>Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] macvlan: Don't propagate promisc change to lower dev in passthru
2023-11-14 17:59 [PATCH net] macvlan: Don't propagate promisc change to lower dev in passthru Vlad Buslov
2023-11-15 7:16 ` Jiri Pirko
@ 2023-11-16 10:29 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-11-16 10:29 UTC (permalink / raw)
To: Vlad Buslov; +Cc: davem, kuba, pabeni, edumazet, netdev, vyasevic, gal
Hello:
This patch was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:
On Tue, 14 Nov 2023 18:59:15 +0100 you wrote:
> Macvlan device in passthru mode sets its lower device promiscuous mode
> according to its MACVLAN_FLAG_NOPROMISC flag instead of synchronizing it to
> its own promiscuity setting. However, macvlan_change_rx_flags() function
> doesn't check the mode before propagating such changes to the lower device
> which can cause net_device->promiscuity counter overflow as illustrated by
> reproduction example [0] and resulting dmesg log [1]. Fix the issue by
> first verifying the mode in macvlan_change_rx_flags() function before
> propagating promiscuous mode change to the lower device.
>
> [...]
Here is the summary with links:
- [net] macvlan: Don't propagate promisc change to lower dev in passthru
https://git.kernel.org/netdev/net/c/7e1caeace041
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-16 10:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-14 17:59 [PATCH net] macvlan: Don't propagate promisc change to lower dev in passthru Vlad Buslov
2023-11-15 7:16 ` Jiri Pirko
2023-11-16 10:29 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).