ipcctl_pre_down_nolock — retrieve an ipc and check permissions for some IPC_XXX cmd


struct kern_ipc_perm * ipcctl_pre_down_nolock (struct ipc_namespace * ns,
 struct ipc_ids * ids,
 int id,
 int cmd,
 struct ipc64_perm * perm,
 int extra_perm);


struct ipc_namespace * ns

ipc namespace

struct ipc_ids * ids

the table of ids where to look for the ipc

int id

the id of the ipc to retrieve

int cmd

the cmd to check

struct ipc64_perm * perm

the permission to set

int extra_perm

one extra permission parameter used by msq


This function does some common audit and permissions check for some IPC_XXX cmd and is called from semctl_down, shmctl_down and msgctl_down. It must be called without any lock held and - retrieves the ipc with the given id in the given table. - performs some audit and permission check, depending on the given cmd - returns a pointer to the ipc object or otherwise, the corresponding error.

Call holding the both the rwsem and the rcu read lock.