public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
To: intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com,
	aleksandr.loktionov@intel.com
Cc: netdev@vger.kernel.org, Marcin Szycik <marcin.szycik@intel.com>
Subject: [PATCH net] ice: fix setting promisc mode while adding VID filter
Date: Fri, 27 Mar 2026 08:23:28 +0100	[thread overview]
Message-ID: <20260327072332.130320-5-aleksandr.loktionov@intel.com> (raw)
In-Reply-To: <20260327072332.130320-1-aleksandr.loktionov@intel.com>

From: Marcin Szycik <marcin.szycik@intel.com>

There are at least two paths through which VSI promiscuous mode can be
independently configured via ice_fltr_set_vsi_promisc():
- ice_vlan_rx_add_vid() (netdev op)
- ice_service_task() -> ... -> ice_set_promisc()

Both paths may try to program promiscuous mode concurrently. One such
scenario is:

1. Add ice netdev to bond
2. Add the bond netdev to bridge
3. ice netdev enters allmulticast mode (IFF_ALLMULTI)
4. Service task programs promisc mode filter
5. Bridge -> bond calls ice_vlan_rx_add_vid()

Crucially, ice_vlan_rx_add_vid() fails if ice_fltr_set_vsi_promisc()
returns any error, including -EEXIST. This causes VLAN filtering setup
to fail on the bond interface. ice_set_promisc() already handles -EEXIST
correctly.

Fix by adding the same -EEXIST check to ice_vlan_rx_add_vid(): if the
promisc filter is already programmed, continue without returning error.

Fixes: 1273f89578f2 ("ice: Fix broken IFF_ALLMULTI handling")
Cc: stable@vger.kernel.org
Signed-off-by: Marcin Szycik <marcin.szycik@intel.com>
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
---

 drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 8896805..cf116bb 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -3755,7 +3755,7 @@ int ice_vlan_rx_add_vid(struct net_device *netdev, __be16 proto, u16 vid)
 		ret = ice_fltr_set_vsi_promisc(&vsi->back->hw, vsi->idx,
 					       ICE_MCAST_VLAN_PROMISC_BITS,
 					       vid);
-		if (ret)
+		if (ret && ret != -EEXIST)
 			goto finish;
 	}
 
-- 
2.52.0


  parent reply	other threads:[~2026-03-27  7:23 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-27  7:23 [PATCH net] ice: fix null-ptr dereference on false-positive tx timeout Aleksandr Loktionov
2026-03-27  7:23 ` [PATCH net] ice: fix locking around wait_event_interruptible_locked_irq Aleksandr Loktionov
2026-04-03  9:11   ` Simon Horman
2026-03-27  7:23 ` [PATCH net] ice: fix PTP Call Trace during PTP release Aleksandr Loktionov
2026-04-03  9:05   ` Simon Horman
2026-03-27  7:23 ` [PATCH net] ice: fix PTP hang for E825C devices Aleksandr Loktionov
2026-04-03 12:31   ` Simon Horman
2026-03-27  7:23 ` Aleksandr Loktionov [this message]
2026-04-03 12:28   ` [PATCH net] ice: fix setting promisc mode while adding VID filter Simon Horman
2026-03-27  7:23 ` [PATCH net] ice: fix ice_init_link() error return preventing probe Aleksandr Loktionov
2026-04-03 12:36   ` Simon Horman
2026-04-03 12:38     ` Simon Horman
2026-03-27  7:23 ` [PATCH net] ice: fix netdev bring-up and bring-down in self-test Aleksandr Loktionov
2026-03-27  7:23 ` [PATCH net] ice: stop DCBNL requests during driver unload Aleksandr Loktionov
2026-04-03 13:06   ` Simon Horman
2026-03-27  7:23 ` [PATCH net] ice: use READ_ONCE() to access cached PHC time Aleksandr Loktionov
2026-04-03 12:55   ` Simon Horman

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=20260327072332.130320-5-aleksandr.loktionov@intel.com \
    --to=aleksandr.loktionov@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=marcin.szycik@intel.com \
    --cc=netdev@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox