projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
10014ff
)
lightnvm: pblk: add lock protection to list operations
author
Hua Su
<suhua.tanke@gmail.com>
Tue, 11 Dec 2018 19:16:18 +0000
(20:16 +0100)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Tue, 12 Feb 2019 18:47:08 +0000
(19:47 +0100)
[ Upstream commit
fde201a466c6ad5efd72cb54fdf2cefa8b6c6ad7
]
Protect the list_add on the pblk_line_init_bb() error
path in case this code is used for some other purpose
in the future.
Signed-off-by: Hua Su <suhua.tanke@gmail.com>
Reviewed-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <mb@lightnvm.io>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/lightnvm/pblk-core.c
patch
|
blob
|
history
diff --git
a/drivers/lightnvm/pblk-core.c
b/drivers/lightnvm/pblk-core.c
index
2940cdc
..
95be6e3
100644
(file)
--- a/
drivers/lightnvm/pblk-core.c
+++ b/
drivers/lightnvm/pblk-core.c
@@
-1252,15
+1252,22
@@
int pblk_line_recov_alloc(struct pblk *pblk, struct pblk_line *line)
ret = pblk_line_alloc_bitmaps(pblk, line);
if (ret)
-
return ret
;
+
goto fail
;
if (!pblk_line_init_bb(pblk, line, 0)) {
-
list_add(&line->list, &l_mg->free_list)
;
-
return -EINTR
;
+
ret = -EINTR
;
+
goto fail
;
}
pblk_rl_free_lines_dec(&pblk->rl, line, true);
return 0;
+
+fail:
+ spin_lock(&l_mg->free_lock);
+ list_add(&line->list, &l_mg->free_list);
+ spin_unlock(&l_mg->free_lock);
+
+ return ret;
}
void pblk_line_recov_close(struct pblk *pblk, struct pblk_line *line)