On Mon, Sep 18, 2017 at 12:28:48PM +0100, Sudip Mukherjee wrote: > From: Sudip Mukherjee > > If delay_drop_debugfs_init() fails in any of the operations to create > debugfs, it is calling delay_drop_debugfs_cleanup() as part of its > cleanup. But delay_drop_debugfs_cleanup() checks for 'dbg' and since > we have not yet pointed 'dbg' to the debugfs we need to cleanup, the > cleanup fails and we are left with stray debugfs elements and also a > memory leak. > > Fixes: 4a5fd5d2965c ("IB/mlx5: Add necessary delay drop assignment") > Signed-off-by: Sudip Mukherjee > --- > drivers/infiniband/hw/mlx5/main.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c > index ab3c562..05fb4bd 100644 > --- a/drivers/infiniband/hw/mlx5/main.c > +++ b/drivers/infiniband/hw/mlx5/main.c > @@ -3837,11 +3837,13 @@ static int delay_drop_debugfs_init(struct mlx5_ib_dev *dev) > if (!dbg) > return -ENOMEM; > > + dev->delay_drop.dbg = dbg; > + > dbg->dir_debugfs = > debugfs_create_dir("delay_drop", > dev->mdev->priv.dbg_root); > if (!dbg->dir_debugfs) > - return -ENOMEM; > + goto out_debugfs; > Thanks, Acked-by: Leon Romanovsky