From 4829d30c6ad418ea9b6cdc0f3d3f96b754fb35e7 Mon Sep 17 00:00:00 2001 From: Peter Hurley Date: Fri, 8 Mar 2013 12:43:27 -0800 Subject: [PATCH] --- yaml --- r: 360978 b: refs/heads/master c: 88b9e456b1649722673ffa147914299799dc9041 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/ipc/msg.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 19144db62e8c..2d0d45ffb614 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e1082f45f1e2bbf6e25f6b614fc6616ebf709d19 +refs/heads/master: 88b9e456b1649722673ffa147914299799dc9041 diff --git a/trunk/ipc/msg.c b/trunk/ipc/msg.c index 950572f9d796..31cd1bf6af27 100644 --- a/trunk/ipc/msg.c +++ b/trunk/ipc/msg.c @@ -820,15 +820,17 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, struct msg_msg *copy = NULL; unsigned long copy_number = 0; + ns = current->nsproxy->ipc_ns; + if (msqid < 0 || (long) bufsz < 0) return -EINVAL; if (msgflg & MSG_COPY) { - copy = prepare_copy(buf, bufsz, msgflg, &msgtyp, ©_number); + copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax), + msgflg, &msgtyp, ©_number); if (IS_ERR(copy)) return PTR_ERR(copy); } mode = convert_mode(&msgtyp, msgflg); - ns = current->nsproxy->ipc_ns; msq = msg_lock_check(ns, msqid); if (IS_ERR(msq)) {