• Arnd Bergmann's avatar
    vfs: bogus warnings in fs/namei.c · 98f6ef64
    Arnd Bergmann authored
    The follow_link() function always initializes its *p argument,
    or returns an error, but when building with 'gcc -s', the compiler
    gets confused by the __always_inline attribute to the function
    and can no longer detect where the cookie was initialized.
    
    The solution is to always initialize the pointer from follow_link,
    even in the error path. When building with -O2, this has zero impact
    on generated code and adds a single instruction in the error path
    for a -Os build on ARM.
    
    Without this patch, building with gcc-4.6 through gcc-4.8 and
    CONFIG_CC_OPTIMIZE_FOR_SIZE results in:
    
    fs/namei.c: In function 'link_path_walk':
    fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
    fs/namei.c:1544:9: note: 'cookie' was declared here
    fs/namei.c: In function 'path_lookupat':
    fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
    fs/namei.c:1934:10: note: 'cookie' was declared here
    fs/namei.c: In function 'path_openat':
    fs/namei.c:649:24: warning: 'cookie' may be used uninitialized in this function [-Wuninitialized]
    fs/namei.c:2899:9: note: 'cookie' was declared here
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    98f6ef64
namei.c 97.1 KB