Skip to content

Commit

Permalink
Merge branch 'slab/for-6.1/slub_validation_locking' into slab/for-next
Browse files Browse the repository at this point in the history
A fix for a regression in slub_debug caches that could cause slab page
leaks and subsequent warnings on cache shutdown, by Feng Tang.
  • Loading branch information
tehcaster committed Sep 30, 2022
2 parents 445d41d + b731e35 commit 00a7829
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions mm/slub.c
Original file line number Diff line number Diff line change
Expand Up @@ -2881,22 +2881,25 @@ static noinline void free_debug_processing(
set_freepointer(s, tail, prior);
slab->freelist = head;

/* Do we need to remove the slab from full or partial list? */
/*
* If the slab is empty, and node's partial list is full,
* it should be discarded anyway no matter it's on full or
* partial list.
*/
if (slab->inuse == 0 && n->nr_partial >= s->min_partial)
slab_free = slab;

if (!prior) {
/* was on full list */
remove_full(s, n, slab);
} else if (slab->inuse == 0 &&
n->nr_partial >= s->min_partial) {
if (!slab_free) {
add_partial(n, slab, DEACTIVATE_TO_TAIL);
stat(s, FREE_ADD_PARTIAL);
}
} else if (slab_free) {
remove_partial(n, slab);
stat(s, FREE_REMOVE_PARTIAL);
}

/* Do we need to discard the slab or add to partial list? */
if (slab->inuse == 0 && n->nr_partial >= s->min_partial) {
slab_free = slab;
} else if (!prior) {
add_partial(n, slab, DEACTIVATE_TO_TAIL);
stat(s, FREE_ADD_PARTIAL);
}
}

if (slab_free) {
Expand Down

0 comments on commit 00a7829

Please sign in to comment.