All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sabrina Dubroca <sd@queasysnail.net>
To: netdev@vger.kernel.org
Cc: Leon Romanovsky <leon@kernel.org>,
	Antoine Tenart <atenart@kernel.org>,
	Sabrina Dubroca <sd@queasysnail.net>
Subject: [PATCH net v2 3/5] macsec: fix secy->n_rx_sc accounting
Date: Wed, 26 Oct 2022 23:56:25 +0200	[thread overview]
Message-ID: <b54fb76f963e4b1dbecec5e073a6dfb81f25bed8.1666793468.git.sd@queasysnail.net> (raw)
In-Reply-To: <cover.1666793468.git.sd@queasysnail.net>

secy->n_rx_sc is supposed to be the number of _active_ rxsc's within a
secy. This is then used by macsec_send_sci to help decide if we should
add the SCI to the header or not.

This logic is currently broken when we create a new RXSC and turn it
off at creation, as create_rx_sc always sets ->active to true (and
immediately uses that to increment n_rx_sc), and only later
macsec_add_rxsc sets rx_sc->active.

Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
---
v2: drop unnecessary !! (Leon Romanovsky)

 drivers/net/macsec.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 0d6fe34b91ae..48e2dd2d5778 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -1413,7 +1413,8 @@ static struct macsec_rx_sc *del_rx_sc(struct macsec_secy *secy, sci_t sci)
 	return NULL;
 }
 
-static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci)
+static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci,
+					 bool active)
 {
 	struct macsec_rx_sc *rx_sc;
 	struct macsec_dev *macsec;
@@ -1437,7 +1438,7 @@ static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci)
 	}
 
 	rx_sc->sci = sci;
-	rx_sc->active = true;
+	rx_sc->active = active;
 	refcount_set(&rx_sc->refcnt, 1);
 
 	secy = &macsec_priv(dev)->secy;
@@ -1876,6 +1877,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
 	struct macsec_rx_sc *rx_sc;
 	struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1];
 	struct macsec_secy *secy;
+	bool active = true;
 	int ret;
 
 	if (!attrs[MACSEC_ATTR_IFINDEX])
@@ -1897,15 +1899,16 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
 	secy = &macsec_priv(dev)->secy;
 	sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]);
 
-	rx_sc = create_rx_sc(dev, sci);
+
+	if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE])
+		active = nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]);
+
+	rx_sc = create_rx_sc(dev, sci, active);
 	if (IS_ERR(rx_sc)) {
 		rtnl_unlock();
 		return PTR_ERR(rx_sc);
 	}
 
-	if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE])
-		rx_sc->active = !!nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]);
-
 	if (macsec_is_offloaded(netdev_priv(dev))) {
 		const struct macsec_ops *ops;
 		struct macsec_context ctx;
-- 
2.38.0


  parent reply	other threads:[~2022-10-26 21:57 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-26 21:56 [PATCH net v2 0/5] macsec: offload-related fixes Sabrina Dubroca
2022-10-26 21:56 ` [PATCH net v2 1/5] Revert "net: macsec: report real_dev features when HW offloading is enabled" Sabrina Dubroca
2022-10-30  8:13   ` Leon Romanovsky
2022-10-30 11:54     ` Raed Salem
2022-10-30 15:02       ` Raed Salem
2022-10-26 21:56 ` [PATCH net v2 2/5] macsec: delete new rxsc when offload fails Sabrina Dubroca
2022-10-30  8:13   ` Leon Romanovsky
2022-10-26 21:56 ` Sabrina Dubroca [this message]
2022-10-27 18:29   ` [PATCH net v2 3/5] macsec: fix secy->n_rx_sc accounting Jakub Kicinski
2022-10-30  8:14   ` Leon Romanovsky
2022-10-26 21:56 ` [PATCH net v2 4/5] macsec: fix detection of RXSCs when toggling offloading Sabrina Dubroca
2022-10-30  8:15   ` Leon Romanovsky
2022-10-26 21:56 ` [PATCH net v2 5/5] macsec: clear encryption keys from the stack after setting up offload Sabrina Dubroca
2022-10-30  8:16   ` Leon Romanovsky
2022-10-27  8:45 ` [PATCH net v2 0/5] macsec: offload-related fixes Antoine Tenart

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=b54fb76f963e4b1dbecec5e073a6dfb81f25bed8.1666793468.git.sd@queasysnail.net \
    --to=sd@queasysnail.net \
    --cc=atenart@kernel.org \
    --cc=leon@kernel.org \
    --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 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.