diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-08 18:05:42 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-03-08 18:05:42 -0500 |
| commit | 59d8e5eb2bd5593d8220db0e25206cdfc42e83ea (patch) | |
| tree | 5a11524581ff040f2c335fc6a318ff54f100552c /ipc/msg.c | |
| parent | c4c5ff09872751eeb412e3e1af484955529426a1 (diff) | |
| parent | c3d6b628395fe6ec3442a83ddf02334c54867d43 (diff) | |
Merge branch 'akpm' (fixes from Andrew)
Merge misc fixes from Andrew Morton.
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
alpha: boot: fix build breakage introduced by system.h disintegration
memcg: initialize kmem-cache destroying work earlier
Randy has moved
ksm: fix m68k build: only NUMA needs pfn_to_nid
dmi_scan: fix missing check for _DMI_ signature in smbios_present()
Revert parts of "hlist: drop the node parameter from iterators"
idr: remove WARN_ON_ONCE() on negative IDs
mm/mempolicy.c: fix sp_node_init() argument ordering
mm/mempolicy.c: fix wrong sp_node insertion
ipc: don't allocate a copy larger than max
ipc: fix potential oops when src msg > 4k w/ MSG_COPY
Diffstat (limited to 'ipc/msg.c')
| -rw-r--r-- | ipc/msg.c | 6 |
1 files changed, 4 insertions, 2 deletions
| @@ -820,15 +820,17 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, | |||
| 820 | struct msg_msg *copy = NULL; | 820 | struct msg_msg *copy = NULL; |
| 821 | unsigned long copy_number = 0; | 821 | unsigned long copy_number = 0; |
| 822 | 822 | ||
| 823 | ns = current->nsproxy->ipc_ns; | ||
| 824 | |||
| 823 | if (msqid < 0 || (long) bufsz < 0) | 825 | if (msqid < 0 || (long) bufsz < 0) |
| 824 | return -EINVAL; | 826 | return -EINVAL; |
| 825 | if (msgflg & MSG_COPY) { | 827 | if (msgflg & MSG_COPY) { |
| 826 | copy = prepare_copy(buf, bufsz, msgflg, &msgtyp, ©_number); | 828 | copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax), |
| 829 | msgflg, &msgtyp, ©_number); | ||
| 827 | if (IS_ERR(copy)) | 830 | if (IS_ERR(copy)) |
| 828 | return PTR_ERR(copy); | 831 | return PTR_ERR(copy); |
| 829 | } | 832 | } |
| 830 | mode = convert_mode(&msgtyp, msgflg); | 833 | mode = convert_mode(&msgtyp, msgflg); |
| 831 | ns = current->nsproxy->ipc_ns; | ||
| 832 | 834 | ||
| 833 | msq = msg_lock_check(ns, msqid); | 835 | msq = msg_lock_check(ns, msqid); |
| 834 | if (IS_ERR(msq)) { | 836 | if (IS_ERR(msq)) { |
