Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1216159 > unrolled thread
| Started by | Matias Bjørling <m@bjorling.me> |
|---|---|
| First post | 2015-08-31 14:20 +0200 |
| Last post | 2015-09-03 07:50 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] null_blk: fix memory leak on cleanup Matias Bjørling <m@bjorling.me> - 2015-08-31 14:20 +0200
Re: [PATCH] null_blk: fix memory leak on cleanup Ross Zwisler <ross.zwisler@linux.intel.com> - 2015-09-02 20:50 +0200
Re: [PATCH] null_blk: fix memory leak on cleanup Matias Bjorling <m@bjorling.me> - 2015-09-03 07:50 +0200
| From | Matias Bjørling <m@bjorling.me> |
|---|---|
| Date | 2015-08-31 14:20 +0200 |
| Subject | [PATCH] null_blk: fix memory leak on cleanup |
| Message-ID | <q3we5-7pO-7@gated-at.bofh.it> |
From: Matias Bjørling <mb@lightnvm.io>
Driver was not freeing the memory allocated for internal nullb queues.
This patch frees the memory during driver unload.
Signed-off-by: Matias Bjørling <mb@lightnvm.io>
---
drivers/block/null_blk.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c
index 69de41a..90f6781 100644
--- a/drivers/block/null_blk.c
+++ b/drivers/block/null_blk.c
@@ -406,6 +406,22 @@ static struct blk_mq_ops null_mq_ops = {
.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)
{
list_del_init(&nullb->list);
@@ -415,6 +431,7 @@ static void null_del_dev(struct nullb *nullb)
if (queue_mode == NULL_Q_MQ)
blk_mq_free_tag_set(&nullb->tag_set);
put_disk(nullb->disk);
+ cleanup_queues(nullb);
kfree(nullb);
}
@@ -459,22 +476,6 @@ static int setup_commands(struct nullb_queue *nq)
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)
{
nullb->queues = kzalloc(submit_queues * sizeof(struct nullb_queue),
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Ross Zwisler <ross.zwisler@linux.intel.com> |
|---|---|
| Date | 2015-09-02 20:50 +0200 |
| Message-ID | <q4lgB-4Zd-5@gated-at.bofh.it> |
| In reply to | #1216159 |
On Mon, Aug 31, 2015 at 02:17:18PM +0200, Matias Bjørling wrote: > From: Matias Bjørling <mb@lightnvm.io> > > Driver was not freeing the memory allocated for internal nullb queues. > This patch frees the memory during driver unload. You may want to consider devm_* style allocations instead. These are freed automatically on driver unload, simplifying your error paths and your unload logic as well as preventing leaks. See this patch for an example: https://lkml.org/lkml/2015/8/10/992 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Matias Bjorling <m@bjorling.me> |
|---|---|
| Date | 2015-09-03 07:50 +0200 |
| Message-ID | <q4vzk-2Si-3@gated-at.bofh.it> |
| In reply to | #1217801 |
Den 02-09-2015 kl. 20:39 skrev Ross Zwisler: > On Mon, Aug 31, 2015 at 02:17:18PM +0200, Matias Bjørling wrote: >> From: Matias Bjørling <mb@lightnvm.io> >> >> Driver was not freeing the memory allocated for internal nullb queues. >> This patch frees the memory during driver unload. > > You may want to consider devm_* style allocations instead. These are freed > automatically on driver unload, simplifying your error paths and your unload > logic as well as preventing leaks. > > See this patch for an example: > > https://lkml.org/lkml/2015/8/10/992 > Thanks for looking through the patches. I'll look into it. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web