aboutsummaryrefslogtreecommitdiffstats
path: root/ipc/msg.c
diff options
context:
space:
mode:
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 /*