• Jesper Nilsson's avatar
    ipc,shm: correct error return value in shmctl (SHM_UNLOCK) · 3a72660b
    Jesper Nilsson authored
    Commit 2caacaa8 ("ipc,shm: shorten critical region for shmctl")
    restructured the ipc shm to shorten critical region, but introduced a
    path where the return value could be -EPERM, even if the operation
    actually was performed.
    
    Before the commit, the err return value was reset by the return value
    from security_shm_shmctl() after the if (!ns_capable(...)) statement.
    
    Now, we still exit the if statement with err set to -EPERM, and in the
    case of SHM_UNLOCK, it is not reset at all, and used as the return value
    from shmctl.
    
    To fix this, we only set err when errors occur, leaving the fallthrough
    case alone.
    Signed-off-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
    Cc: Davidlohr Bueso <davidlohr@hp.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: <stable@vger.kernel.org>	[3.12.x]
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3a72660b
shm.c 31.9 KB