diff options
-rw-r--r-- | mm/slub.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1350,11 +1350,12 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) | |||
1350 | page = alloc_slab_page(alloc_gfp, node, oo); | 1350 | page = alloc_slab_page(alloc_gfp, node, oo); |
1351 | if (unlikely(!page)) { | 1351 | if (unlikely(!page)) { |
1352 | oo = s->min; | 1352 | oo = s->min; |
1353 | alloc_gfp = flags; | ||
1353 | /* | 1354 | /* |
1354 | * Allocation may have failed due to fragmentation. | 1355 | * Allocation may have failed due to fragmentation. |
1355 | * Try a lower order alloc if possible | 1356 | * Try a lower order alloc if possible |
1356 | */ | 1357 | */ |
1357 | page = alloc_slab_page(flags, node, oo); | 1358 | page = alloc_slab_page(alloc_gfp, node, oo); |
1358 | 1359 | ||
1359 | if (page) | 1360 | if (page) |
1360 | stat(s, ORDER_FALLBACK); | 1361 | stat(s, ORDER_FALLBACK); |
@@ -1364,7 +1365,7 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) | |||
1364 | && !(s->flags & (SLAB_NOTRACK | DEBUG_DEFAULT_FLAGS))) { | 1365 | && !(s->flags & (SLAB_NOTRACK | DEBUG_DEFAULT_FLAGS))) { |
1365 | int pages = 1 << oo_order(oo); | 1366 | int pages = 1 << oo_order(oo); |
1366 | 1367 | ||
1367 | kmemcheck_alloc_shadow(page, oo_order(oo), flags, node); | 1368 | kmemcheck_alloc_shadow(page, oo_order(oo), alloc_gfp, node); |
1368 | 1369 | ||
1369 | /* | 1370 | /* |
1370 | * Objects from caches that have a constructor don't get | 1371 | * Objects from caches that have a constructor don't get |