projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b21019a
)
md/raid10: fix memleak of md thread
author
Yu Kuai
<yukuai3@huawei.com>
Fri, 10 Mar 2023 07:38:55 +0000
(15:38 +0800)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:23 +0000
(23:03 +0900)
[ Upstream commit
f0ddb83da3cbbf8a1f9087a642c448ff52ee9abd
]
In raid10_run(), if setup_conf() succeed and raid10_run() failed before
setting 'mddev->thread', then in the error path 'conf->thread' is not
freed.
Fix the problem by setting 'mddev->thread' right after setup_conf().
Fixes:
43a521238aca
("md-cluster: choose correct label when clustered layout is not supported")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link:
https://lore.kernel.org/r/20230310073855.1337560-7-yukuai1@huaweicloud.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/md/raid10.c
patch
|
blob
|
history
diff --git
a/drivers/md/raid10.c
b/drivers/md/raid10.c
index
c861db5
..
006c28e
100644
(file)
--- a/
drivers/md/raid10.c
+++ b/
drivers/md/raid10.c
@@
-4148,6
+4148,9
@@
static int raid10_run(struct mddev *mddev)
if (!conf)
goto out;
+ mddev->thread = conf->thread;
+ conf->thread = NULL;
+
if (mddev_is_clustered(conf->mddev)) {
int fc, fo;
@@
-4160,9
+4163,6
@@
static int raid10_run(struct mddev *mddev)
}
}
- mddev->thread = conf->thread;
- conf->thread = NULL;
-
if (mddev->queue) {
blk_queue_max_write_zeroes_sectors(mddev->queue, 0);
blk_queue_io_min(mddev->queue, mddev->chunk_sectors << 9);