diff options
author | 2017-03-11 19:09:45 +0000 | |
---|---|---|
committer | 2017-05-17 09:44:53 -0400 | |
commit | 7e1b9521f5a8356553f5e58b07952bf346632ea4 (patch) | |
tree | 9a740e30fef998d6c173c2471263f2ad8ba343eb /drivers/md | |
parent | dm bufio: make the parameter "retain_bytes" unsigned long (diff) | |
download | linux-7e1b9521f5a8356553f5e58b07952bf346632ea4.tar.gz linux-7e1b9521f5a8356553f5e58b07952bf346632ea4.tar.bz2 linux-7e1b9521f5a8356553f5e58b07952bf346632ea4.zip |
dm cache: handle kmalloc failure allocating background_tracker struct
Currently there is no kmalloc failure check on the allocation of
the background_tracker struct in btracker_create(), and so a NULL return
will lead to a NULL pointer dereference. Add a NULL check.
Detected by CoverityScan, CID#1416587 ("Dereference null return value")
Fixes: b29d4986d ("dm cache: significant rework to leverage dm-bio-prison-v2")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-cache-background-tracker.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/md/dm-cache-background-tracker.c b/drivers/md/dm-cache-background-tracker.c index 9b1afdfb13f0..707233891291 100644 --- a/drivers/md/dm-cache-background-tracker.c +++ b/drivers/md/dm-cache-background-tracker.c @@ -33,6 +33,11 @@ struct background_tracker *btracker_create(unsigned max_work) { struct background_tracker *b = kmalloc(sizeof(*b), GFP_KERNEL); + if (!b) { + DMERR("couldn't create background_tracker"); + return NULL; + } + b->max_work = max_work; atomic_set(&b->pending_promotes, 0); atomic_set(&b->pending_writebacks, 0); |