arm64: dts: marvell: add CP110 uart peripherals
[linux-2.6-block.git] / ipc / sem.c
index 87bd38f38dc328529ef2f6854a7a3d1e945bd9a0..a4af04979fd2ddec7351bbd801d224b7ebf15279 100644 (file)
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1213,10 +1213,20 @@ static int semctl_stat(struct ipc_namespace *ns, int semid,
        if (err)
                goto out_unlock;
 
+       ipc_lock_object(&sma->sem_perm);
+
+       if (!ipc_valid_object(&sma->sem_perm)) {
+               ipc_unlock_object(&sma->sem_perm);
+               err = -EIDRM;
+               goto out_unlock;
+       }
+
        kernel_to_ipc64_perm(&sma->sem_perm, &semid64->sem_perm);
        semid64->sem_otime = get_semotime(sma);
        semid64->sem_ctime = sma->sem_ctime;
        semid64->sem_nsems = sma->sem_nsems;
+
+       ipc_unlock_object(&sma->sem_perm);
        rcu_read_unlock();
        return id;