[CRIU] [PATCH 2/2] ipc: add new MSG_SET_COPY command for
sys_msgctl() call
Pavel Emelyanov
xemul at parallels.com
Thu Aug 9 04:44:22 EDT 2012
On 08/09/2012 12:40 PM, Stanislav Kinsbursky wrote:
> New MSG_SET_COPY allows to set specified queue copy counter to passed value.
> Passed "struct msqid_ds *buf" interpreted as pointer to unsigned int in this
> case.
> ---
> include/linux/msg.h | 4 ++++
> ipc/compat.c | 3 +++
> ipc/msg.c | 18 ++++++++++++++++++
> 3 files changed, 25 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/msg.h b/include/linux/msg.h
> index de739d1..b63d6a4 100644
> --- a/include/linux/msg.h
> +++ b/include/linux/msg.h
> @@ -8,6 +8,10 @@
> #define MSG_INFO 12
> #define MSG_SET 13
>
> +#ifdef CONFIG_CHECKPOINT_RESTORE
> +#define MSG_SET_COPY 14
> +#endif
> +
> /* msgrcv options */
> #define MSG_NOERROR 010000 /* no error if message is too big */
> #define MSG_EXCEPT 020000 /* recv any msg except of specified type.*/
> diff --git a/ipc/compat.c b/ipc/compat.c
> index 6b07f5c..0d211f7 100644
> --- a/ipc/compat.c
> +++ b/ipc/compat.c
> @@ -481,6 +481,9 @@ long compat_sys_msgctl(int first, int second, void __user *uptr)
> case IPC_INFO:
> case IPC_RMID:
> case MSG_INFO:
> +#ifdef CONFIG_CHECKPOINT_RESTORE
> + case MSG_SET_PEEK:
PEEK?
> +#endif
> err = sys_msgctl(first, second, uptr);
> break;
>
> diff --git a/ipc/msg.c b/ipc/msg.c
> index d4ca06f..44a2153 100644
> --- a/ipc/msg.c
> +++ b/ipc/msg.c
> @@ -579,6 +579,24 @@ SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf)
> case MSG_SET:
> err = msgctl_down(ns, msqid, cmd, buf, version);
> return err;
> +#ifdef CONFIG_CHECKPOINT_RESTORE
> + case MSG_SET_COPY:
> + {
> + int peek_cnt;
> +
> + if (!buf)
> + return -EFAULT;
> + if (get_user(peek_cnt, (unsigned int *)buf))
> + return -EFAULT;
> +
> + msq = msg_lock(ns, msqid);
> + if (IS_ERR(msq))
> + return PTR_ERR(msq);
> + msq->q_peek_cnt = peek_cnt;
> + err = 0;
msg_unlock missed?
> + break;
> + }
> +#endif
> default:
> return -EINVAL;
> }
>
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://openvz.org/mailman/listinfo/criu
More information about the CRIU
mailing list