mirror of https://github.com/mkerrisk/man-pages
msgop.2: Add restriction on ENOSYS error
When calling msgrcv() with the MSG_COPY flag, it will report EINVAL error even we if have disabled CONFIG_CHECKPOINT_RESTORE. ENOSYS will be reported only if we also specify the IPC_NOWAIT flag. [mtk: edited commit message] Notes from mtk: The relevant kernel code is this: [[ #ifdef CONFIG_CHECKPOINT_RESTORE ... #else static inline struct msg_msg *prepare_copy(void __user *buf, size_t bufsz) { return ERR_PTR(-ENOSYS); } ... static long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, int msgflg, long (*msg_handler)(void __user *, struct msg_msg *, size_t)) { ... if (msgflg & MSG_COPY) { if ((msgflg & MSG_EXCEPT) || !(msgflg & IPC_NOWAIT)) return -EINVAL; copy = prepare_copy(buf, min_t(size_t, bufsz, ns->msg_ctlmax)); ... } ]] We'll only hit the ENOSYS error if: (1) MSG_COPY was specified; (2) IPC_NOWAIT was not specified; and (3) CONFIG_CHECKPOINT_RESTORE was not enabled. Signed-off-by: Yang Xu <xuyang2018.jy@cn.fujitsu.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
c3e8ceb883
commit
ab365f43e7
|
@ -467,7 +467,9 @@ and the queue contains less than
|
|||
messages.
|
||||
.TP
|
||||
.BR ENOSYS " (since Linux 3.8)"
|
||||
.I MSG_COPY
|
||||
.B IPC_NOWAIT
|
||||
and
|
||||
.B MSG_COPY
|
||||
was specified in
|
||||
.IR msgflg ,
|
||||
and this kernel was configured without
|
||||
|
|
Loading…
Reference in New Issue