• Arnd Bergmann's avatar
    ipc: fix sparc64 ipc() wrapper · fb377eb8
    Arnd Bergmann authored
    Matt bisected a sparc64 specific issue with semctl, shmctl and msgctl
    to a commit from my y2038 series in linux-5.1, as I missed the custom
    sys_ipc() wrapper that sparc64 uses in place of the generic version that
    I patched.
    
    The problem is that the sys_{sem,shm,msg}ctl() functions in the kernel
    now do not allow being called with the IPC_64 flag any more, resulting
    in a -EINVAL error when they don't recognize the command.
    
    Instead, the correct way to do this now is to call the internal
    ksys_old_{sem,shm,msg}ctl() functions to select the API version.
    
    As we generally move towards these functions anyway, change all of
    sparc_ipc() to consistently use those in place of the sys_*() versions,
    and move the required ksys_*() declarations into linux/syscalls.h
    
    The IS_ENABLED(CONFIG_SYSVIPC) check is required to avoid link
    errors when ipc is disabled.
    Reported-by: default avatarMatt Turner <mattst88@gmail.com>
    Fixes: 275f2214 ("ipc: rename old-style shmctl/semctl/msgctl syscalls")
    Cc: stable@vger.kernel.org
    Tested-by: default avatarMatt Turner <mattst88@gmail.com>
    Tested-by: default avatarAnatoly Pugachev <matorola@gmail.com>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    fb377eb8
util.h 8.73 KB