diff options
| -rw-r--r-- | ipc/msg.c | 2 |
1 files changed, 2 insertions, 0 deletions
| @@ -901,6 +901,8 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, int msgfl | |||
| 901 | return -EINVAL; | 901 | return -EINVAL; |
| 902 | 902 | ||
| 903 | if (msgflg & MSG_COPY) { | 903 | if (msgflg & MSG_COPY) { |
| 904 | if ((msgflg & MSG_EXCEPT) || !(msgflg & IPC_NOWAIT)) | ||
| 905 | return -EINVAL; | ||
| 904 | copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax)); | 906 | copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax)); |
| 905 | if (IS_ERR(copy)) | 907 | if (IS_ERR(copy)) |
| 906 | return PTR_ERR(copy); | 908 | return PTR_ERR(copy); |
