diff --git a/syscall/ipc_syscall.c b/syscall/ipc_syscall.c index 83ebac4b..ded9894c 100644 --- a/syscall/ipc_syscall.c +++ b/syscall/ipc_syscall.c @@ -94,9 +94,15 @@ int SysMqClose(mqd_t personal) int SysMqNotify(mqd_t personal, const struct sigevent *sigev) { int ret; + struct sigevent ksigev; + + ret = LOS_ArchCopyFromUser(&ksigev, sigev, sizeof(struct sigevent)); + if (ret != 0) { + return -EFAULT; + } MQUEUE_FD_U2K(personal); - ret = OsMqNotify(personal, sigev); + ret = OsMqNotify(personal, &ksigev); if (ret < 0) { return -get_errno(); }