aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/msg.c
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/msg.c')
-rw-r--r--ipc/msg.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/ipc/msg.c b/ipc/msg.c
index d0c6d967b390..996feb819248 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -199,9 +199,7 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params)
199 return retval; 199 return retval;
200 } 200 }
201 201
202 /* 202 /* ipc_addid() locks msq upon success. */
203 * ipc_addid() locks msq
204 */
205 id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni); 203 id = ipc_addid(&msg_ids(ns), &msq->q_perm, ns->msg_ctlmni);
206 if (id < 0) { 204 if (id < 0) {
207 security_msg_queue_free(msq); 205 security_msg_queue_free(msq);
@@ -218,7 +216,8 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params)
218 INIT_LIST_HEAD(&msq->q_receivers); 216 INIT_LIST_HEAD(&msq->q_receivers);
219 INIT_LIST_HEAD(&msq->q_senders); 217 INIT_LIST_HEAD(&msq->q_senders);
220 218
221 msg_unlock(msq); 219 spin_unlock(&msq->q_perm.lock);
220 rcu_read_unlock();
222 221
223 return msq->q_perm.id; 222 return msq->q_perm.id;
224} 223}