mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
dm era: fix NULL pointer dereference in metadata_open()
metadata_open() returns NULL when kzalloc_obj() fails, but the
caller era_ctr() only checks IS_ERR(md). Since IS_ERR(NULL)
returns false, the NULL pointer is treated as a valid result
and later assigned to era->md, leading to a NULL pointer
dereference when the metadata is accessed.
Fix this by returning ERR_PTR(-ENOMEM) on allocation failure,
consistent with dm-cache-metadata.c, dm-thin-metadata.c, and
dm-clone-metadata.c which all use ERR_PTR(-ENOMEM) for the
same pattern.
Fixes: eec40579d8 ("dm: add era target")
Signed-off-by: Cao Guanghui <caoguanghui@kylinos.cn>
Reviewed-by: Su Yue <glass.su@suse.com>
Reviewed-by: Ming-Hung Tsai <mtsai@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
parent
981ccd97f7
commit
9ae672606c
|
|
@ -810,8 +810,10 @@ static struct era_metadata *metadata_open(struct block_device *bdev,
|
|||
int r;
|
||||
struct era_metadata *md = kzalloc_obj(*md);
|
||||
|
||||
if (!md)
|
||||
return NULL;
|
||||
if (!md) {
|
||||
DMERR("could not allocate metadata struct");
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
md->bdev = bdev;
|
||||
md->block_size = block_size;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user