X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ipc%2Fsem.c;h=71f652c30a7f16f0589e0c51995169184163ff7a;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=193b78decb1d36796c2a3b3ad500b89517f0c90e;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/ipc/sem.c b/ipc/sem.c index 193b78dec..71f652c30 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -66,6 +66,7 @@ * Dustin Kirkland */ +#include #include #include #include @@ -829,11 +830,6 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun if (err) goto out_unlock; - if (cmd == IPC_SET) { - err = audit_ipc_set_perm(0, setbuf.uid, setbuf.gid, setbuf.mode); - if (err) - goto out_unlock; - } if (current->euid != ipcp->cuid && current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN)) { err=-EPERM; @@ -850,6 +846,9 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun err = 0; break; case IPC_SET: + err = audit_ipc_set_perm(0, setbuf.uid, setbuf.gid, setbuf.mode, ipcp); + if (err) + goto out_unlock; ipcp->uid = setbuf.uid; ipcp->gid = setbuf.gid; ipcp->mode = (ipcp->mode & ~S_IRWXUGO)