* Load a message from user space */
| 1642 | * Load a message from user space |
| 1643 | */ |
| 1644 | static struct mqueue_msg * |
| 1645 | mqueue_loadmsg(const char *msg_ptr, size_t msg_size, int msg_prio) |
| 1646 | { |
| 1647 | struct mqueue_msg *msg; |
| 1648 | size_t len; |
| 1649 | int error; |
| 1650 | |
| 1651 | len = sizeof(struct mqueue_msg) + msg_size; |
| 1652 | msg = malloc(len, M_MQUEUEDATA, M_WAITOK); |
| 1653 | error = copyin(msg_ptr, ((char *)msg) + sizeof(struct mqueue_msg), |
| 1654 | msg_size); |
| 1655 | if (error) { |
| 1656 | free(msg, M_MQUEUEDATA); |
| 1657 | msg = NULL; |
| 1658 | } else { |
| 1659 | msg->msg_size = msg_size; |
| 1660 | msg->msg_prio = msg_prio; |
| 1661 | } |
| 1662 | return (msg); |
| 1663 | } |
| 1664 | |
| 1665 | /* |
| 1666 | * Save a message to user space |
no test coverage detected