lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 31 Jan 2022 09:44:27 +0100
From:   Antoine Tenart <atenart@...nel.org>
To:     Raed Salem <raeds@...dia.com>, kuba@...nel.org
Cc:     davem@...emloft.net, netdev@...r.kernel.org,
        linux-kernel@...r.kernel.org, Lior Nahmanson <liorna@...dia.com>,
        Raed Salem <raeds@...dia.com>
Subject: Re: [PATCH net] net: macsec: Fix offload support for NETDEV_UNREGISTER event

Quoting Raed Salem (2022-01-30 12:29:01)
> From: Lior Nahmanson <liorna@...dia.com>
> 
> Current macsec netdev notify handler handles NETDEV_UNREGISTER event by
> releasing relevant SW resources only, this causes resources leak in case
> of macsec HW offload, as the underlay driver was not notified to clean
> it's macsec offload resources.
> 
> Fix by calling the underlay driver to clean it's relevant resources
> by moving offload handling from macsec_dellink() to macsec_common_dellink()
> when handling NETDEV_UNREGISTER event.
> 
> Fixes: 3cf3227a21d1 ("net: macsec: hardware offloading infrastructure")
> Signed-off-by: Lior Nahmanson <liorna@...dia.com>
> Reviewed-by: Raed Salem <raeds@...dia.com>
> Signed-off-by: Raed Salem <raeds@...dia.com>

Reviewed-by: Antoine Tenart <atenart@...nel.org>

Thanks!
Antoine

> ---
>  drivers/net/macsec.c | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
> index 16aa3a4..33ff33c 100644
> --- a/drivers/net/macsec.c
> +++ b/drivers/net/macsec.c
> @@ -3870,6 +3870,18 @@ static void macsec_common_dellink(struct net_device *dev, struct list_head *head
>         struct macsec_dev *macsec = macsec_priv(dev);
>         struct net_device *real_dev = macsec->real_dev;
>  
> +       /* If h/w offloading is available, propagate to the device */
> +       if (macsec_is_offloaded(macsec)) {
> +               const struct macsec_ops *ops;
> +               struct macsec_context ctx;
> +
> +               ops = macsec_get_ops(netdev_priv(dev), &ctx);
> +               if (ops) {
> +                       ctx.secy = &macsec->secy;
> +                       macsec_offload(ops->mdo_del_secy, &ctx);
> +               }
> +       }
> +
>         unregister_netdevice_queue(dev, head);
>         list_del_rcu(&macsec->secys);
>         macsec_del_dev(macsec);
> @@ -3884,18 +3896,6 @@ static void macsec_dellink(struct net_device *dev, struct list_head *head)
>         struct net_device *real_dev = macsec->real_dev;
>         struct macsec_rxh_data *rxd = macsec_data_rtnl(real_dev);
>  
> -       /* If h/w offloading is available, propagate to the device */
> -       if (macsec_is_offloaded(macsec)) {
> -               const struct macsec_ops *ops;
> -               struct macsec_context ctx;
> -
> -               ops = macsec_get_ops(netdev_priv(dev), &ctx);
> -               if (ops) {
> -                       ctx.secy = &macsec->secy;
> -                       macsec_offload(ops->mdo_del_secy, &ctx);
> -               }
> -       }
> -
>         macsec_common_dellink(dev, head);
>  
>         if (list_empty(&rxd->secys)) {
> -- 
> 1.8.3.1
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ