On Sat, Aug 19, 2023 at 3:48 AM Karim Taha <kariem.taha...@gmail.com> wrote:

> From: Stacey Son <s...@freebsd.org>
>
> Signed-off-by: Stacey Son <s...@freebsd.org>
> Signed-off-by: Karim Taha <kariem.taha...@gmail.com>
> ---
>  bsd-user/bsd-mem.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 46 insertions(+)
>

Reviewed-by: Warner Losh <i...@bsdimp.com>

diff --git a/bsd-user/bsd-mem.c b/bsd-user/bsd-mem.c
> index e69250cc0d..4446c94725 100644
> --- a/bsd-user/bsd-mem.c
> +++ b/bsd-user/bsd-mem.c
> @@ -77,3 +77,49 @@ abi_long host_to_target_ipc_perm(abi_ulong target_addr,
>      return 0;
>  }
>
> +abi_long target_to_host_shmid_ds(struct shmid_ds *host_sd,
> +        abi_ulong target_addr)
> +{
> +    struct target_shmid_ds *target_sd;
> +
> +    if (!lock_user_struct(VERIFY_READ, target_sd, target_addr, 1)) {
> +        return -TARGET_EFAULT;
> +    }
> +    if (target_to_host_ipc_perm(&(host_sd->shm_perm), target_addr)) {
> +        return -TARGET_EFAULT;
> +    }
> +    __get_user(host_sd->shm_segsz, &target_sd->shm_segsz);
> +    __get_user(host_sd->shm_lpid, &target_sd->shm_lpid);
> +    __get_user(host_sd->shm_cpid, &target_sd->shm_cpid);
> +    __get_user(host_sd->shm_nattch, &target_sd->shm_nattch);
> +    __get_user(host_sd->shm_atime, &target_sd->shm_atime);
> +    __get_user(host_sd->shm_dtime, &target_sd->shm_dtime);
> +    __get_user(host_sd->shm_ctime, &target_sd->shm_ctime);
> +    unlock_user_struct(target_sd, target_addr, 0);
> +
> +    return 0;
> +}
> +
> +abi_long host_to_target_shmid_ds(abi_ulong target_addr,
> +        struct shmid_ds *host_sd)
> +{
> +    struct target_shmid_ds *target_sd;
> +
> +    if (!lock_user_struct(VERIFY_WRITE, target_sd, target_addr, 0)) {
> +        return -TARGET_EFAULT;
> +    }
> +    if (host_to_target_ipc_perm(target_addr, &(host_sd->shm_perm))) {
> +        return -TARGET_EFAULT;
> +    }
> +    __put_user(host_sd->shm_segsz, &target_sd->shm_segsz);
> +    __put_user(host_sd->shm_lpid, &target_sd->shm_lpid);
> +    __put_user(host_sd->shm_cpid, &target_sd->shm_cpid);
> +    __put_user(host_sd->shm_nattch, &target_sd->shm_nattch);
> +    __put_user(host_sd->shm_atime, &target_sd->shm_atime);
> +    __put_user(host_sd->shm_dtime, &target_sd->shm_dtime);
> +    __put_user(host_sd->shm_ctime, &target_sd->shm_ctime);
> +    unlock_user_struct(target_sd, target_addr, 1);
> +
> +    return 0;
> +}
> +
> --
> 2.40.0
>
>

Reply via email to