slub: Do not dereference NULL pointer in node_match
The variables accessed in slab_alloc are volatile and therefore the page pointer passed to node_match can be NULL. The processing of data in slab_alloc is tentative until either the cmpxhchg succeeds or the __slab_alloc slowpath is invoked. Both are able to perform the same allocation from the freelist. Check for the NULL pointer in node_match. A false positive will lead to a retry of the loop in __slab_alloc. Signed-off-by: Christoph Lameter <cl@linux.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
parent
338b264229
commit
4d7868e647
1 changed files with 1 additions and 1 deletions
|
@ -2042,7 +2042,7 @@ static void flush_all(struct kmem_cache *s)
|
|||
static inline int node_match(struct page *page, int node)
|
||||
{
|
||||
#ifdef CONFIG_NUMA
|
||||
if (node != NUMA_NO_NODE && page_to_nid(page) != node)
|
||||
if (!page || (node != NUMA_NO_NODE && page_to_nid(page) != node))
|
||||
return 0;
|
||||
#endif
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue