From: Karim Taha <kariem.taha2.7@gmail.com>
To: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Cc: imp@bsdimp.com
Subject: Re: [PATCH v3 17/23] bsd-user: Implement mincore(2)
Date: Thu, 14 Sep 2023 01:02:41 +0300 [thread overview]
Message-ID: <874jjx91fi.fsf@gmail.com> (raw)
In-Reply-To: <d019b498-d0ef-e006-a0c3-a2dfa29a5d35@linaro.org>
Richard Henderson <richard.henderson@linaro.org> wrote:
> On 9/9/23 12:36, Karim Taha wrote:
>> From: Stacey Son <sson@FreeBSD.org>
>>
>> Signed-off-by: Stacey Son <sson@FreeBSD.org>
>> Signed-off-by: Karim Taha <kariem.taha2.7@gmail.com>
>> ---
>> bsd-user/bsd-mem.h | 22 ++++++++++++++++++++++
>> bsd-user/freebsd/os-syscall.c | 4 ++++
>> 2 files changed, 26 insertions(+)
>>
>> diff --git a/bsd-user/bsd-mem.h b/bsd-user/bsd-mem.h
>> index 0e16051418..1dabbe36e6 100644
>> --- a/bsd-user/bsd-mem.h
>> +++ b/bsd-user/bsd-mem.h
>> @@ -189,4 +189,26 @@ static inline abi_long do_bsd_minherit(abi_long addr, abi_long len,
>> return get_errno(minherit(g2h_untagged(addr), len, inherit));
>> }
>>
>> +/* mincore(2) */
>> +static inline abi_long do_bsd_mincore(abi_ulong target_addr, abi_ulong len,
>> + abi_ulong target_vec)
>> +{
>> + abi_long ret;
>> + void *p;
>> + abi_ulong vec_len = DIV_ROUND_UP(len,TARGET_PAGE_SIZE);
>> +
>> + if (!guest_range_valid_untagged(target_addr,len) || !page_check_range(target_addr, len, PAGE_VALID)) {
>> + return -TARGET_EFAULT;
>> + }
>> +
>> + p = lock_user(VERIFY_WRITE, target_vec, vec_len, 0);
>> + if (p == NULL) {
>> + return -TARGET_EFAULT;
>> + }
>> + ret = get_errno(mincore(g2h_untagged(target_addr), len, p));
>> + unlock_user(p, target_vec, 0);
>
> You don't need the lock/unlock_user at all. It is wrongly checking for WRITE.
>
>
> r~
>
AFAIU, the host is writing to the target's memory, right?
So this is similar to IPC_STAT case from the shmctl(2) syscall,
where host_to_target_shmid_ds, which has a `lock_user(VERIFY_WRITE,...)`, writes the struct `dsarg` set by
the host syscall `shmctl` at the address `buff` in the target memory.
Is it correct if the host writes to the target without
locking? for example, `mincore(g2h_untagged(target_addr), len, p)` can be done
without locking.
The locking was suggested by you in response to the v1 implementation
which used `lock_user_string`.
>> +
>> + return ret;
>> +}
>> +
>> #endif /* BSD_USER_BSD_MEM_H */
>> diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c
>> index f5d60cf902..8d1cf3b35c 100644
>> --- a/bsd-user/freebsd/os-syscall.c
>> +++ b/bsd-user/freebsd/os-syscall.c
>> @@ -527,6 +527,10 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1,
>> ret = do_bsd_minherit(arg1, arg2, arg3);
>> break;
>>
>> + case TARGET_FREEBSD_NR_mincore: /* mincore(2) */
p>> + ret = do_bsd_mincore(arg1, arg2, arg3);
>> + break;
>> +
>> #if defined(__FreeBSD_version) && __FreeBSD_version >= 1300048
>> case TARGET_FREEBSD_NR_shm_open2: /* shm_open2(2) */
>> ret = do_freebsd_shm_open2(arg1, arg2, arg3, arg4, arg5);
next prev parent reply other threads:[~2023-09-13 22:05 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-09 19:36 [PATCH v3 00/23] bsd-user: Implement mmap related system calls for FreeBSD Karim Taha
2023-09-09 19:36 ` [PATCH v3 01/23] bsd-user: Implement struct target_ipc_perm Karim Taha
2023-09-09 19:36 ` [PATCH v3 02/23] bsd-user: Implement struct target_shmid_ds Karim Taha
2023-09-09 19:36 ` [PATCH v3 03/23] bsd-user: Declarations for ipc_perm and shmid_ds conversion functions Karim Taha
2023-09-09 19:36 ` [PATCH v3 04/23] bsd-user: Introduce freebsd/os-misc.h to the source tree Karim Taha
2023-09-09 19:36 ` [PATCH v3 05/23] bsd-user: Implement shm_open2(2) system call Karim Taha
2023-09-11 23:51 ` Richard Henderson
2023-09-09 19:36 ` [PATCH v3 06/23] bsd-user: Implement shm_rename(2) " Karim Taha
2023-09-09 19:36 ` [PATCH v3 07/23] bsd-user: Add bsd-mem.c to meson.build Karim Taha
2023-09-09 19:36 ` [PATCH v3 08/23] bsd-user: Implement target_set_brk function in bsd-mem.c instead of os-syscall.c Karim Taha
2023-09-09 19:36 ` [PATCH v3 09/23] bsd-user: Implement ipc_perm conversion between host and target Karim Taha
2023-09-09 19:36 ` [PATCH v3 10/23] bsd-user: Implement shmid_ds " Karim Taha
2023-09-11 23:53 ` Richard Henderson
2023-09-09 19:36 ` [PATCH v3 11/23] bsd-user: Introduce bsd-mem.h to the source tree Karim Taha
2023-09-09 19:36 ` [PATCH v3 12/23] bsd-user: Implement mmap(2) and munmap(2) Karim Taha
2023-09-09 19:36 ` [PATCH v3 13/23] bsd-user: Implement mprotect(2) Karim Taha
2023-09-09 19:36 ` [PATCH v3 14/23] bsd-user: Implement msync(2) Karim Taha
2023-09-09 19:36 ` [PATCH v3 15/23] bsd-user: Implement mlock(2), munlock(2), mlockall(2), munlockall(2), minherit(2) Karim Taha
2023-09-09 19:36 ` [PATCH v3 16/23] bsd-user: Implment madvise(2) to match the linux-user implementation Karim Taha
2023-09-11 23:56 ` Richard Henderson
2023-09-09 19:36 ` [PATCH v3 17/23] bsd-user: Implement mincore(2) Karim Taha
2023-09-12 0:03 ` Richard Henderson
2023-09-13 22:02 ` Karim Taha [this message]
2023-09-13 22:24 ` Richard Henderson
2023-09-09 19:36 ` [PATCH v3 18/23] bsd-user: Implement do_obreak function Karim Taha
2023-09-12 0:05 ` Richard Henderson
2023-09-09 19:37 ` [PATCH v3 19/23] bsd-user: Implement shm_open(2) Karim Taha
2023-09-12 0:06 ` Richard Henderson
2023-09-09 19:37 ` [PATCH v3 20/23] bsd-user: Implement shm_unlink(2) and shmget(2) Karim Taha
2023-09-09 19:37 ` [PATCH v3 21/23] bsd-user: Implement shmctl(2) Karim Taha
2023-09-13 13:01 ` Karim Taha
2023-09-13 15:33 ` Richard Henderson
2023-09-09 19:37 ` [PATCH v3 22/23] bsd-user: Implement shmat(2) and shmdt(2) Karim Taha
2023-09-12 0:08 ` Richard Henderson
2023-09-14 16:55 ` Karim Taha
2023-09-14 17:52 ` Richard Henderson
2023-09-09 19:37 ` [PATCH v3 23/23] bsd-user: Add stubs for vadvise(), sbrk() and sstk() Karim Taha
2023-09-12 0:09 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874jjx91fi.fsf@gmail.com \
--to=kariem.taha2.7@gmail.com \
--cc=imp@bsdimp.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.