]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - ipc/sem.c
ipc: add missing container_of()s for randstruct
[karo-tx-linux.git] / ipc / sem.c
index 2b2ed56e0fde246cd16c1022b05adb694476ee9f..38371e93bfa5c4f101e264b46eab6a19f2f02404 100644 (file)
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -258,18 +258,13 @@ static void merge_queues(struct sem_array *sma)
        }
 }
 
-static void __sem_free(struct sem_array *sma)
-{
-       kvfree(sma);
-}
-
 static void sem_rcu_free(struct rcu_head *head)
 {
        struct kern_ipc_perm *p = container_of(head, struct kern_ipc_perm, rcu);
        struct sem_array *sma = container_of(p, struct sem_array, sem_perm);
 
        security_sem_free(sma);
-       __sem_free(sma);
+       kvfree(sma);
 }
 
 /*
@@ -465,7 +460,6 @@ static struct sem_array *sem_alloc(size_t nsems)
                return NULL;
 
        memset(sma, 0, size);
-       atomic_set(&sma->sem_perm.refcount, 1);
 
        return sma;
 }
@@ -501,7 +495,7 @@ static int newary(struct ipc_namespace *ns, struct ipc_params *params)
        sma->sem_perm.security = NULL;
        retval = security_sem_alloc(sma);
        if (retval) {
-               __sem_free(sma);
+               kvfree(sma);
                return retval;
        }
 
@@ -2185,7 +2179,8 @@ void exit_sem(struct task_struct *tsk)
 static int sysvipc_sem_proc_show(struct seq_file *s, void *it)
 {
        struct user_namespace *user_ns = seq_user_ns(s);
-       struct sem_array *sma = it;
+       struct kern_ipc_perm *ipcp = it;
+       struct sem_array *sma = container_of(ipcp, struct sem_array, sem_perm);
        time_t sem_otime;
 
        /*