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 2/5] macsec: delete new rxsc when offload fails
Date: Wed, 26 Oct 2022 23:56:24 +0200	[thread overview]
Message-ID: <54e5c16b2ffb7db1fac0c1f2360e7a332c115364.1666793468.git.sd@queasysnail.net> (raw)
In-Reply-To: <cover.1666793468.git.sd@queasysnail.net>

Currently we get an inconsistent state:
 - netlink returns the error to userspace
 - the RXSC is installed but not offloaded

Then the device could get confused when we try to add an RXSA, because
the RXSC isn't supposed to exist.

Fixes: 3cf3227a21d1 ("net: macsec: hardware offloading infrastructure")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
---
 drivers/net/macsec.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index b3f76e8071f2..0d6fe34b91ae 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -1876,7 +1876,6 @@ 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 was_active;
 	int ret;
 
 	if (!attrs[MACSEC_ATTR_IFINDEX])
@@ -1904,7 +1903,6 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
 		return PTR_ERR(rx_sc);
 	}
 
-	was_active = rx_sc->active;
 	if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE])
 		rx_sc->active = !!nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]);
 
@@ -1931,7 +1929,8 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info)
 	return 0;
 
 cleanup:
-	rx_sc->active = was_active;
+	del_rx_sc(secy, sci);
+	free_rx_sc(rx_sc);
 	rtnl_unlock();
 	return ret;
 }
-- 
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 ` Sabrina Dubroca [this message]
2022-10-30  8:13   ` [PATCH net v2 2/5] macsec: delete new rxsc when offload fails Leon Romanovsky
2022-10-26 21:56 ` [PATCH net v2 3/5] macsec: fix secy->n_rx_sc accounting Sabrina Dubroca
2022-10-27 18:29   ` 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=54e5c16b2ffb7db1fac0c1f2360e7a332c115364.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.