Commit c52add61 authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by Jakub Kicinski

macsec: don't free NULL metadata_dst

Commit 0a28bfd4 added a metadata_dst to each tx_sc, but that's
only allocated when macsec_add_dev has run, which happens after device
registration. If the requested or computed SCI already exists, or if
linking to the lower device fails, we will panic because
metadata_dst_free can't handle NULL.

Reproducer:
    ip link add link $lower type macsec
    ip link add link $lower type macsec

Fixes: 0a28bfd4 ("net/macsec: Add MACsec skb_metadata_dst Tx Data path support")
Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
Acked-by: default avatarRaed Salem <raeds@nvidia.com>
Link: https://lore.kernel.org/r/60f2a1965fe553e2cade9472407d0fafff8de8ce.1663923580.git.sd@queasysnail.netSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 9258b8b1
...@@ -3720,6 +3720,7 @@ static void macsec_free_netdev(struct net_device *dev) ...@@ -3720,6 +3720,7 @@ static void macsec_free_netdev(struct net_device *dev)
{ {
struct macsec_dev *macsec = macsec_priv(dev); struct macsec_dev *macsec = macsec_priv(dev);
if (macsec->secy.tx_sc.md_dst)
metadata_dst_free(macsec->secy.tx_sc.md_dst); metadata_dst_free(macsec->secy.tx_sc.md_dst);
free_percpu(macsec->stats); free_percpu(macsec->stats);
free_percpu(macsec->secy.tx_sc.stats); free_percpu(macsec->secy.tx_sc.stats);
......
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