Commit 9bbf282d authored by Doug Ledford's avatar Doug Ledford

IB/mlx4: Fix memory leak in do_slave_init

We create a number of work structs to be queued up to a workqueue, and
on completion of the workqueue handler, the workqueue handler frees the
allocated memory.  If, however, we don't queue the work struct because
the device is going down, then we need to free the memory ourselves.
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent a39a98ff
...@@ -2692,6 +2692,8 @@ static void do_slave_init(struct mlx4_ib_dev *ibdev, int slave, int do_init) ...@@ -2692,6 +2692,8 @@ static void do_slave_init(struct mlx4_ib_dev *ibdev, int slave, int do_init)
spin_lock_irqsave(&ibdev->sriov.going_down_lock, flags); spin_lock_irqsave(&ibdev->sriov.going_down_lock, flags);
if (!ibdev->sriov.is_going_down) if (!ibdev->sriov.is_going_down)
queue_work(ibdev->sriov.demux[i].ud_wq, &dm[i]->work); queue_work(ibdev->sriov.demux[i].ud_wq, &dm[i]->work);
else
kfree(dm[i]);
spin_unlock_irqrestore(&ibdev->sriov.going_down_lock, flags); spin_unlock_irqrestore(&ibdev->sriov.going_down_lock, flags);
} }
out: out:
......
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