diff options
author | Jianqun Xu <jay.xu@rock-chips.com> | 2020-08-11 18:31:54 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-08-12 10:57:57 -0700 |
commit | 835832ba01bb444c7e45139e4b807527c119dafc (patch) | |
tree | 70fa999aa9337310c37ba78629cb5351f2019772 /mm | |
parent | 1a5bae25e3cf95c4e83a97f87a6b5280d9acbb22 (diff) | |
download | linux-835832ba01bb444c7e45139e4b807527c119dafc.tar.gz linux-835832ba01bb444c7e45139e4b807527c119dafc.tar.bz2 linux-835832ba01bb444c7e45139e4b807527c119dafc.zip |
mm/cma.c: fix NULL pointer dereference when cma could not be activated
In some case the cma area could not be activated, but the cma_alloc be
used under this case, then the kernel will crash caused by NULL pointer
dereference.
Add bitmap valid check in cma_alloc to avoid this issue.
Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: David Hildenbrand <david@redhat.com>
Link: http://lkml.kernel.org/r/20200615010123.15596-1-jay.xu@rock-chips.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/cma.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -425,7 +425,7 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, struct page *page = NULL; int ret = -ENOMEM; - if (!cma || !cma->count) + if (!cma || !cma->count || !cma->bitmap) return NULL; pr_debug("%s(cma %p, count %zu, align %d)\n", __func__, (void *)cma, |