diff --git a/ipc/sem.c b/ipc/sem.c index f2151babd26a7688ccc638b7a4dd35dd6022e5bb..899b598b63be30bb70f1182edb2b9b91a5e50bd9 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -948,8 +948,8 @@ static int semctl_nolock(struct ipc_namespace *ns, int semid, memset(&tbuf, 0, sizeof(tbuf)); + rcu_read_lock(); if (cmd == SEM_STAT) { - rcu_read_lock(); sma = sem_obtain_object(ns, semid); if (IS_ERR(sma)) { err = PTR_ERR(sma); @@ -957,7 +957,6 @@ static int semctl_nolock(struct ipc_namespace *ns, int semid, } id = sma->sem_perm.id; } else { - rcu_read_lock(); sma = sem_obtain_object_check(ns, semid); if (IS_ERR(sma)) { err = PTR_ERR(sma);