From d25c835a50f82be76c53157dcae4d57c704b9d7c Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 4 May 2013 10:13:40 -0700 Subject: [PATCH] --- yaml --- r: 372855 b: refs/heads/master c: 4091fd942e96af5a0b1dfa6aac5f44153ebf7cdb h: refs/heads/master i: 372853: 9f1b7ba4e92fc0a68b09c3a7644804070ae001bc 372851: cec73d416a57fa2e9b608a96cee09c90fe99a419 372847: 6609edc9315970c6b6cd298843c5b25929ff92a3 v: v3 --- [refs] | 2 +- trunk/ipc/sem.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index aecbe1ec25da..d785c96db9ec 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 73b29505c36eeb4751eccad41f6aad78562521f8 +refs/heads/master: 4091fd942e96af5a0b1dfa6aac5f44153ebf7cdb diff --git a/trunk/ipc/sem.c b/trunk/ipc/sem.c index 5cf7b4c093b3..8f5aa34f8d30 100644 --- a/trunk/ipc/sem.c +++ b/trunk/ipc/sem.c @@ -322,7 +322,6 @@ static inline struct sem_array *sem_obtain_object_check(struct ipc_namespace *ns static inline void sem_lock_and_putref(struct sem_array *sma) { - rcu_read_lock(); sem_lock(sma, NULL, -1); ipc_rcu_putref(sma); } @@ -1117,6 +1116,7 @@ static int semctl_main(struct ipc_namespace *ns, int semid, int semnum, return -ENOMEM; } + rcu_read_lock(); sem_lock_and_putref(sma); if (sma->sem_perm.deleted) { sem_unlock(sma, -1); @@ -1166,6 +1166,7 @@ static int semctl_main(struct ipc_namespace *ns, int semid, int semnum, goto out_free; } } + rcu_read_lock(); sem_lock_and_putref(sma); if (sma->sem_perm.deleted) { sem_unlock(sma, -1); @@ -1451,7 +1452,7 @@ static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid) } /* step 3: Acquire the lock on semaphore array */ - /* This also does the rcu_read_lock() */ + rcu_read_lock(); sem_lock_and_putref(sma); if (sma->sem_perm.deleted) { sem_unlock(sma, -1);