• Steven Rostedt's avatar
    ring-buffer: typecast cmpxchg to fix PowerPC warning · 08a40816
    Steven Rostedt authored
    The cmpxchg used by PowerPC does the following:
    
      ({									 \
         __typeof__(*(ptr)) _o_ = (o);					 \
         __typeof__(*(ptr)) _n_ = (n);					 \
         (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,		 \
    				    (unsigned long)_n_, sizeof(*(ptr))); \
      })
    
    This does a type check of *ptr to both o and n.
    
    Unfortunately, the code in ring-buffer.c assigns longs to pointers
    and pointers to longs and causes a warning on PowerPC:
    
    ring_buffer.c: In function 'rb_head_page_set':
    ring_buffer.c:704: warning: initialization makes pointer from integer without a cast
    ring_buffer.c:704: warning: initialization makes pointer from integer without a cast
    ring_buffer.c: In function 'rb_head_page_replace':
    ring_buffer.c:797: warning: initialization makes integer from pointer without a cast
    
    This patch adds the typecasts inside cmpxchg to annotate that a long is
    being cast to a pointer and a pointer is being casted to a long and this
    removes the PowerPC warnings.
    Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    08a40816
ring_buffer.c 96.1 KB