From: Vlastimil Babka Date: Tue, 11 Jul 2023 13:35:33 +0000 (+0200) Subject: mm/slub: remove freelist_dereference() X-Git-Tag: v6.6.17~3842^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1662b6c2bb7e7502d6ae4b6aca4116e844a4277c;p=platform%2Fkernel%2Flinux-rpi.git 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 Acked-by: Kees Cook --- diff --git a/mm/slub.c b/mm/slub.c index 07edad305512..f7940048138c 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -397,18 +397,15 @@ static inline void *freelist_ptr_decode(const struct kmem_cache *s, return decoded; } -/* Returns the freelist pointer recorded at location ptr_addr. */ -static inline void *freelist_dereference(const struct kmem_cache *s, - void *ptr_addr) -{ - return freelist_ptr_decode(s, *(freeptr_t *)(ptr_addr), - (unsigned long)ptr_addr); -} - static inline void *get_freepointer(struct kmem_cache *s, void *object) { + unsigned long ptr_addr; + freeptr_t p; + object = kasan_reset_tag(object); - return freelist_dereference(s, (freeptr_t *)(object + s->offset)); + ptr_addr = (unsigned long)object + s->offset; + p = *(freeptr_t *)(ptr_addr); + return freelist_ptr_decode(s, p, ptr_addr); } #ifndef CONFIG_SLUB_TINY