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));                \
 })

Reply via email to