• Serge Belyshev's avatar
    Remove unnecessary cast in prefetch() · 4ecbca85
    Serge Belyshev authored
    It is ok to call prefetch() function with NULL argument, as specifically
    commented in include/linux/prefetch.h.  But in standard C, it is invalid
    to dereference NULL pointer (see C99 standard 6.5.3.2 paragraph 4 and
    note #84).
    
    prefetch() has a memory reference for its argument.
    
    Newer gcc versions (4.3 and above) will use that to conclude that "x"
    argument is non-null and thus wreaking havok everywhere prefetch() was
    inlined.
    
    Fixed by removing cast and changing asm constraint.
    
    [ It seems in theory gcc 4.2 could miscompile this too; although no
      cases known.  In 2.6.24 we should probably switch to
      __builtin_prefetch() instead, but this is a simpler fix for now.
    				-- AK ]
    Signed-off-by: default avatarSerge Belyshev <belyshev@depni.sinp.msu.ru>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4ecbca85
processor.h 11.2 KB