Thread (5 messages) 5 messages, 4 authors, 2019-01-25

Re: [PATCH] lightnvm: pblk: stop taking the free lock in in pblk_lines_free

From: Matias Bjørling <hidden>
Date: 2019-01-22 19:49:04
Also in: lkml

On 1/22/19 11:15 AM, hans@owltronix.com wrote:
quoted hunk ↗ jump to hunk
From: Hans Holmberg <redacted>

pblk_line_meta_free might sleep (it can end up calling vfree, depending
on how we allocate lba lists), and this can lead to a BUG()
if we wake up on a different cpu and release the lock.

As there is no point of grabbing the free lock when pblk has shut down,
remove the lock.

Signed-off-by: Hans Holmberg <redacted>
---
  drivers/lightnvm/pblk-init.c | 2 --
  1 file changed, 2 deletions(-)
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index f9a3e47b6a93..eb0135c77805 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -584,14 +584,12 @@ static void pblk_lines_free(struct pblk *pblk)
  	struct pblk_line *line;
  	int i;
  
-	spin_lock(&l_mg->free_lock);
  	for (i = 0; i < l_mg->nr_lines; i++) {
  		line = &pblk->lines[i];
  
  		pblk_line_free(line);
  		pblk_line_meta_free(l_mg, line);
  	}
-	spin_unlock(&l_mg->free_lock);
  
  	pblk_line_mg_free(pblk);
  
Thanks Hans. Applied for 5.1.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help