Re: [PATCH v2] arm64/mm: fix variable 'tag' set but not used

From: Matthew Wilcox
Date: Thu Aug 01 2019 - 12:00:22 EST


On Thu, Aug 01, 2019 at 10:47:05AM -0400, Qian Cai wrote:

Given this:

> -#define __tag_set(addr, tag) (addr)
> +static inline const void *__tag_set(const void *addr, u8 tag)
> +{
> + return addr;
> +}
> +
> #define __tag_reset(addr) (addr)
> #define __tag_get(addr) 0
> #endif
> @@ -301,8 +305,8 @@ static inline void *phys_to_virt(phys_addr_t x)
> #define page_to_virt(page) ({ \
> unsigned long __addr = \
> ((__page_to_voff(page)) | PAGE_OFFSET); \
> - unsigned long __addr_tag = \
> - __tag_set(__addr, page_kasan_tag(page)); \
> + const void *__addr_tag = \
> + __tag_set((void *)__addr, page_kasan_tag(page)); \
> ((void *)__addr_tag); \
> })

Can't you simplify that macro to:

#define page_to_virt(page) ({ \
unsigned long __addr = \
((__page_to_voff(page)) | PAGE_OFFSET); \
- unsigned long __addr_tag = \
- __tag_set(__addr, page_kasan_tag(page)); \
- ((void *)__addr_tag); \
+ __tag_set((void *)__addr, page_kasan_tag(page)); \
})