lkml.org 
[lkml]   [2018]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 009/235] net/mlx5: Fix debugfs cleanup in the device init/remove flow
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jack Morgenstein <jackm@dev.mellanox.co.il>

    [ Upstream commit 5df816e7f43f1297c40021ef17ec6e722b45c82f ]

    When initializing the device (procedure init_one), the driver
    calls mlx5_pci_init to perform pci initialization. As part of this
    initialization, mlx5_pci_init creates a debugfs directory.
    If this creation fails, init_one aborts, returning failure to
    the caller (which is the probe method caller).

    The main reason for such a failure to occur is if the debugfs
    directory already exists. This can happen if the last time
    mlx5_pci_close was called, debugfs_remove (silently) failed due
    to the debugfs directory not being empty.

    Guarantee that such a debugfs_remove failure will not occur by
    instead calling debugfs_remove_recursive in procedure mlx5_pci_close.

    Fixes: 59211bd3b632 ("net/mlx5: Split the load/unload flow into hardware and software flows")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/main.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
    @@ -874,8 +874,10 @@ static int mlx5_pci_init(struct mlx5_cor
    priv->numa_node = dev_to_node(&dev->pdev->dev);

    priv->dbg_root = debugfs_create_dir(dev_name(&pdev->dev), mlx5_debugfs_root);
    - if (!priv->dbg_root)
    + if (!priv->dbg_root) {
    + dev_err(&pdev->dev, "Cannot create debugfs dir, aborting\n");
    return -ENOMEM;
    + }

    err = mlx5_pci_enable_device(dev);
    if (err) {
    @@ -924,7 +926,7 @@ static void mlx5_pci_close(struct mlx5_c
    pci_clear_master(dev->pdev);
    release_bar(dev->pdev);
    mlx5_pci_disable_device(dev);
    - debugfs_remove(priv->dbg_root);
    + debugfs_remove_recursive(priv->dbg_root);
    }

    static int mlx5_init_once(struct mlx5_core_dev *dev, struct mlx5_priv *priv)

    \
     
     \ /
      Last update: 2018-09-24 14:29    [W:2.595 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site