diff --git a/syscall/ipc_syscall.c b/syscall/ipc_syscall.c index 83ebac4b35124952f5f17106b93af04df41012a2..ded9894c7b9444e2a8d7b6c65bb1e1be6dd55de4 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(); }