i write some bare-metal c code need mq_open/mq_unlink syscall, but the syscall failed in passed name param check, arg1 in this scenario is the correct address from user-space, arg1 - 1 not. i have tested in arm cortex-m55 cpu model, maybe should add conditional compile macro?
Signed-off-by: Zhang He <zhanghe9...@163.com> --- linux-user/syscall.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index fc37028597..be9610176a 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -13058,7 +13058,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, } pposix_mq_attr = &posix_mq_attr; } - p = lock_user_string(arg1 - 1); + p = lock_user_string(arg1); if (!p) { return -TARGET_EFAULT; } @@ -13068,7 +13068,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, return ret; case TARGET_NR_mq_unlink: - p = lock_user_string(arg1 - 1); + p = lock_user_string(arg1); if (!p) { return -TARGET_EFAULT; } -- 2.43.0