diff options
-rw-r--r-- | mm/slob.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -398,6 +398,10 @@ static void slob_free(void *block, int size) | |||
398 | sp->units += units; | 398 | sp->units += units; |
399 | 399 | ||
400 | if (b < sp->free) { | 400 | if (b < sp->free) { |
401 | if (b + units == sp->free) { | ||
402 | units += slob_units(sp->free); | ||
403 | sp->free = slob_next(sp->free); | ||
404 | } | ||
401 | set_slob(b, units, sp->free); | 405 | set_slob(b, units, sp->free); |
402 | sp->free = b; | 406 | sp->free = b; |
403 | } else { | 407 | } else { |