On Thu, 2019-08-01 at 09:00 -0700, Matthew Wilcox wrote:
> 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));                \
>  })

It still need a cast or lowmem_page_address() will complain of a discarded
"const". It might be a bit harder to read when adding a cast as in,

((void *)__tag_set((void *)__addr, page_kasan_tag(page)));

But, that feel like more of a followup patch for me if ever needed.

Reply via email to