diff options
Diffstat (limited to 'ipc/msg.c')
-rw-r--r-- | ipc/msg.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -770,6 +770,10 @@ static long do_msg_fill(void __user *dest, struct msg_msg *msg, size_t bufsz) | |||
770 | } | 770 | } |
771 | 771 | ||
772 | #ifdef CONFIG_CHECKPOINT_RESTORE | 772 | #ifdef CONFIG_CHECKPOINT_RESTORE |
773 | /* | ||
774 | * This function creates new kernel message structure, large enough to store | ||
775 | * bufsz message bytes. | ||
776 | */ | ||
773 | static inline struct msg_msg *prepare_copy(void __user *buf, size_t bufsz, | 777 | static inline struct msg_msg *prepare_copy(void __user *buf, size_t bufsz, |
774 | int msgflg, long *msgtyp, | 778 | int msgflg, long *msgtyp, |
775 | unsigned long *copy_number) | 779 | unsigned long *copy_number) |
@@ -881,6 +885,10 @@ long do_msgrcv(int msqid, void __user *buf, size_t bufsz, long msgtyp, | |||
881 | msg = ERR_PTR(-E2BIG); | 885 | msg = ERR_PTR(-E2BIG); |
882 | goto out_unlock; | 886 | goto out_unlock; |
883 | } | 887 | } |
888 | /* | ||
889 | * If we are copying, then do not unlink message and do | ||
890 | * not update queue parameters. | ||
891 | */ | ||
884 | if (msgflg & MSG_COPY) | 892 | if (msgflg & MSG_COPY) |
885 | goto out_unlock; | 893 | goto out_unlock; |
886 | list_del(&msg->m_list); | 894 | list_del(&msg->m_list); |