X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=ipc%2Fsem.c;fp=ipc%2Fsem.c;h=b3cbd4ce1513e8e58a57bc3e58d31efde459b300;hb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;hp=11b2960d6a20e909c969341dda6e81ce60c77cf4;hpb=4e76c8a9fa413ccc09d3f7f664183dcce3555d57;p=linux-2.6.git diff --git a/ipc/sem.c b/ipc/sem.c index 11b2960d6..b3cbd4ce1 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -66,7 +66,6 @@ * Dustin Kirkland */ -#include #include #include #include @@ -829,6 +828,11 @@ 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; @@ -845,9 +849,6 @@ 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)