Commit de65d2d2 authored by Matias Bjørling's avatar Matias Bjørling Committed by Jens Axboe

null_blk: fix memory leak on cleanup

Driver was not freeing the memory allocated for internal nullb queues.
This patch frees the memory during driver unload.
Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 5014c311
...@@ -406,6 +406,22 @@ static struct blk_mq_ops null_mq_ops = { ...@@ -406,6 +406,22 @@ static struct blk_mq_ops null_mq_ops = {
.complete = null_softirq_done_fn, .complete = null_softirq_done_fn,
}; };
static void cleanup_queue(struct nullb_queue *nq)
{
kfree(nq->tag_map);
kfree(nq->cmds);
}
static void cleanup_queues(struct nullb *nullb)
{
int i;
for (i = 0; i < nullb->nr_queues; i++)
cleanup_queue(&nullb->queues[i]);
kfree(nullb->queues);
}
static void null_del_dev(struct nullb *nullb) static void null_del_dev(struct nullb *nullb)
{ {
list_del_init(&nullb->list); list_del_init(&nullb->list);
...@@ -415,6 +431,7 @@ static void null_del_dev(struct nullb *nullb) ...@@ -415,6 +431,7 @@ static void null_del_dev(struct nullb *nullb)
if (queue_mode == NULL_Q_MQ) if (queue_mode == NULL_Q_MQ)
blk_mq_free_tag_set(&nullb->tag_set); blk_mq_free_tag_set(&nullb->tag_set);
put_disk(nullb->disk); put_disk(nullb->disk);
cleanup_queues(nullb);
kfree(nullb); kfree(nullb);
} }
...@@ -459,22 +476,6 @@ static int setup_commands(struct nullb_queue *nq) ...@@ -459,22 +476,6 @@ static int setup_commands(struct nullb_queue *nq)
return 0; return 0;
} }
static void cleanup_queue(struct nullb_queue *nq)
{
kfree(nq->tag_map);
kfree(nq->cmds);
}
static void cleanup_queues(struct nullb *nullb)
{
int i;
for (i = 0; i < nullb->nr_queues; i++)
cleanup_queue(&nullb->queues[i]);
kfree(nullb->queues);
}
static int setup_queues(struct nullb *nullb) static int setup_queues(struct nullb *nullb)
{ {
nullb->queues = kzalloc(submit_queues * sizeof(struct nullb_queue), nullb->queues = kzalloc(submit_queues * sizeof(struct nullb_queue),
......
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