summaryrefslogtreecommitdiffstats
path: root/ipc/msg.c
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2013-04-30 22:14:59 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 11:12:57 -0400
commitd076ac9112797884c0be35f4c93c1517aa352c0c (patch)
tree5a39ceeebedd90e3bd4d567449e90678c932ab04 /ipc/msg.c
parent8ac6ed5857c8d583e0dc2ab2165966ab143930ad (diff)
ipc: simplify msg list search
Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Acked-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'ipc/msg.c')
-rw-r--r--ipc/msg.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/ipc/msg.c b/ipc/msg.c
index 7c209b4f5e38..a92275023134 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -836,7 +836,7 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
836 836
837 for (;;) { 837 for (;;) {
838 struct msg_receiver msr_d; 838 struct msg_receiver msr_d;
839 struct list_head *tmp; 839 struct msg_msg *walk_msg;
840 long msg_counter = 0; 840 long msg_counter = 0;
841 841
842 msg = ERR_PTR(-EACCES); 842 msg = ERR_PTR(-EACCES);
@@ -844,11 +844,8 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
844 goto out_unlock; 844 goto out_unlock;
845 845
846 msg = ERR_PTR(-EAGAIN); 846 msg = ERR_PTR(-EAGAIN);
847 tmp = msq->q_messages.next; 847 list_for_each_entry(walk_msg, &msq->q_messages, m_list) {
848 while (tmp != &msq->q_messages) {
849 struct msg_msg *walk_msg;
850 848
851 walk_msg = list_entry(tmp, struct msg_msg, m_list);
852 if (testmsg(walk_msg, msgtyp, mode) && 849 if (testmsg(walk_msg, msgtyp, mode) &&
853 !security_msg_queue_msgrcv(msq, walk_msg, current, 850 !security_msg_queue_msgrcv(msq, walk_msg, current,
854 msgtyp, mode)) { 851 msgtyp, mode)) {
@@ -865,7 +862,6 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
865 break; 862 break;
866 msg_counter++; 863 msg_counter++;
867 } 864 }
868 tmp = tmp->next;
869 } 865 }
870 if (!IS_ERR(msg)) { 866 if (!IS_ERR(msg)) {
871 /* 867 /*