summaryrefslogtreecommitdiff
path: root/ipc
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2014-05-14 18:19:12 (GMT)
committerScott Wood <scottwood@freescale.com>2014-05-14 18:37:18 (GMT)
commit86ba38e6f5f2fbfe9b49e153ea89593b26482019 (patch)
treef99d2906b0eafca507f37289e68052fc105cc2dc /ipc
parent07c8b57b111585a617b2b456497fc9b33c00743c (diff)
downloadlinux-fsl-qoriq-86ba38e6f5f2fbfe9b49e153ea89593b26482019.tar.xz
Reset to 3.12.19
Diffstat (limited to 'ipc')
-rw-r--r--ipc/mqueue.c24
-rw-r--r--ipc/msg.c16
-rw-r--r--ipc/sem.c10
3 files changed, 7 insertions, 43 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 2276120..bb0248f 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -923,17 +923,12 @@ static inline void pipelined_send(struct mqueue_inode_info *info,
struct msg_msg *message,
struct ext_wait_queue *receiver)
{
- /*
- * Keep them in one critical section for PREEMPT_RT:
- */
- preempt_disable_rt();
receiver->msg = message;
list_del(&receiver->list);
receiver->state = STATE_PENDING;
wake_up_process(receiver->task);
smp_wmb();
receiver->state = STATE_READY;
- preempt_enable_rt();
}
/* pipelined_receive() - if there is task waiting in sys_mq_timedsend()
@@ -947,18 +942,13 @@ static inline void pipelined_receive(struct mqueue_inode_info *info)
wake_up_interruptible(&info->wait_q);
return;
}
- /*
- * Keep them in one critical section for PREEMPT_RT:
- */
- preempt_disable_rt();
- if (!msg_insert(sender->msg, info)) {
- list_del(&sender->list);
- sender->state = STATE_PENDING;
- wake_up_process(sender->task);
- smp_wmb();
- sender->state = STATE_READY;
- }
- preempt_enable_rt();
+ if (msg_insert(sender->msg, info))
+ return;
+ list_del(&sender->list);
+ sender->state = STATE_PENDING;
+ wake_up_process(sender->task);
+ smp_wmb();
+ sender->state = STATE_READY;
}
SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr,
diff --git a/ipc/msg.c b/ipc/msg.c
index 1cf8b2c..52770bf 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -253,18 +253,10 @@ static void expunge_all(struct msg_queue *msq, int res)
struct msg_receiver *msr, *t;
list_for_each_entry_safe(msr, t, &msq->q_receivers, r_list) {
- /*
- * Make sure that the wakeup doesnt preempt
- * this CPU prematurely. (on PREEMPT_RT)
- */
- preempt_disable_rt();
-
msr->r_msg = NULL;
wake_up_process(msr->r_tsk);
smp_mb();
msr->r_msg = ERR_PTR(res);
-
- preempt_enable_rt();
}
}
@@ -644,12 +636,6 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg)
!security_msg_queue_msgrcv(msq, msg, msr->r_tsk,
msr->r_msgtype, msr->r_mode)) {
- /*
- * Make sure that the wakeup doesnt preempt
- * this CPU prematurely. (on PREEMPT_RT)
- */
- preempt_disable_rt();
-
list_del(&msr->r_list);
if (msr->r_maxsize < msg->m_ts) {
msr->r_msg = NULL;
@@ -663,11 +649,9 @@ static inline int pipelined_send(struct msg_queue *msq, struct msg_msg *msg)
wake_up_process(msr->r_tsk);
smp_mb();
msr->r_msg = msg;
- preempt_enable_rt();
return 1;
}
- preempt_enable_rt();
}
}
return 0;
diff --git a/ipc/sem.c b/ipc/sem.c
index 258b45e..db9d241 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -666,13 +666,6 @@ undo:
static void wake_up_sem_queue_prepare(struct list_head *pt,
struct sem_queue *q, int error)
{
-#ifdef CONFIG_PREEMPT_RT_BASE
- struct task_struct *p = q->sleeper;
- get_task_struct(p);
- q->status = error;
- wake_up_process(p);
- put_task_struct(p);
-#else
if (list_empty(pt)) {
/*
* Hold preempt off so that we don't get preempted and have the
@@ -684,7 +677,6 @@ static void wake_up_sem_queue_prepare(struct list_head *pt,
q->pid = error;
list_add_tail(&q->list, pt);
-#endif
}
/**
@@ -698,7 +690,6 @@ static void wake_up_sem_queue_prepare(struct list_head *pt,
*/
static void wake_up_sem_queue_do(struct list_head *pt)
{
-#ifndef CONFIG_PREEMPT_RT_BASE
struct sem_queue *q, *t;
int did_something;
@@ -711,7 +702,6 @@ static void wake_up_sem_queue_do(struct list_head *pt)
}
if (did_something)
preempt_enable();
-#endif
}
static void unlink_queue(struct sem_array *sma, struct sem_queue *q)