diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/slub.c | 20 |
1 files changed, 1 insertions, 19 deletions
@@ -1511,26 +1511,8 @@ new_slab: | |||
1511 | 1511 | ||
1512 | if (new) { | 1512 | if (new) { |
1513 | c = get_cpu_slab(s, smp_processor_id()); | 1513 | c = get_cpu_slab(s, smp_processor_id()); |
1514 | if (c->page) { | 1514 | if (c->page) |
1515 | /* | ||
1516 | * Someone else populated the cpu_slab while we | ||
1517 | * enabled interrupts, or we have gotten scheduled | ||
1518 | * on another cpu. The page may not be on the | ||
1519 | * requested node even if __GFP_THISNODE was | ||
1520 | * specified. So we need to recheck. | ||
1521 | */ | ||
1522 | if (node_match(c, node)) { | ||
1523 | /* | ||
1524 | * Current cpuslab is acceptable and we | ||
1525 | * want the current one since its cache hot | ||
1526 | */ | ||
1527 | discard_slab(s, new); | ||
1528 | slab_lock(c->page); | ||
1529 | goto load_freelist; | ||
1530 | } | ||
1531 | /* New slab does not fit our expectations */ | ||
1532 | flush_slab(s, c); | 1515 | flush_slab(s, c); |
1533 | } | ||
1534 | slab_lock(new); | 1516 | slab_lock(new); |
1535 | SetSlabFrozen(new); | 1517 | SetSlabFrozen(new); |
1536 | c->page = new; | 1518 | c->page = new; |