Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2dc958fa authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by Linus Torvalds
Browse files

ipc: set msg back to -EAGAIN if copy wasn't performed



Make sure that msg pointer is set back to error value in case of
MSG_COPY flag is set and desired message to copy wasn't found.  This
garantees that msg is either a error pointer or a copy address.

Otherwise the last message in queue will be freed without unlinking from
the queue (which leads to memory corruption) and the dummy allocated
copy won't be released.

Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 118c9a45
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -872,6 +872,7 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp,
							goto out_unlock;
							goto out_unlock;
						break;
						break;
					}
					}
					msg = ERR_PTR(-EAGAIN);
				} else
				} else
					break;
					break;
				msg_counter++;
				msg_counter++;