diff options
| -rw-r--r-- | mm/slub.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/slub.c b/mm/slub.c index 1bf65c421325..a0b905c2a557 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -6336,8 +6336,6 @@ next_remote_batch: if (unlikely(!slab_free_hook(s, p[i], init, false))) { p[i] = p[--size]; - if (!size) - goto flush_remote; continue; } @@ -6352,6 +6350,9 @@ next_remote_batch: i++; } + if (!size) + goto flush_remote; + next_batch: if (!local_trylock(&s->cpu_sheaves->lock)) goto fallback; @@ -6406,6 +6407,9 @@ do_free: goto next_batch; } + if (remote_nr) + goto flush_remote; + return; no_empty: |
