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); |
