Skip to content

Commit 1662b6c

Browse files
committed
mm/slub: remove freelist_dereference()
freelist_dereference() is a one-liner only used from get_freepointer(). Remove it and make get_freepointer() call freelist_ptr_decode() directly to make the code easier to follow. Signed-off-by: Vlastimil Babka <[email protected]> Acked-by: Kees Cook <[email protected]>
1 parent b06952c commit 1662b6c

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

mm/slub.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -397,18 +397,15 @@ static inline void *freelist_ptr_decode(const struct kmem_cache *s,
397397
return decoded;
398398
}
399399

400-
/* Returns the freelist pointer recorded at location ptr_addr. */
401-
static inline void *freelist_dereference(const struct kmem_cache *s,
402-
void *ptr_addr)
403-
{
404-
return freelist_ptr_decode(s, *(freeptr_t *)(ptr_addr),
405-
(unsigned long)ptr_addr);
406-
}
407-
408400
static inline void *get_freepointer(struct kmem_cache *s, void *object)
409401
{
402+
unsigned long ptr_addr;
403+
freeptr_t p;
404+
410405
object = kasan_reset_tag(object);
411-
return freelist_dereference(s, (freeptr_t *)(object + s->offset));
406+
ptr_addr = (unsigned long)object + s->offset;
407+
p = *(freeptr_t *)(ptr_addr);
408+
return freelist_ptr_decode(s, p, ptr_addr);
412409
}
413410

414411
#ifndef CONFIG_SLUB_TINY

0 commit comments

Comments
 (0)