linux-user: Use ARRAY_SIZE with bitmask_transtbl
commita05cee93f4052179c036789c5a246948dcc362f0
authorRichard Henderson <richard.henderson@linaro.org>
Tue, 8 Aug 2023 01:26:54 +0000 (7 18:26 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Wed, 9 Aug 2023 14:17:42 +0000 (9 07:17 -0700)
tree282ef45a00d97874197532670a13c89a28144944
parent9ab8d0714964abce6f5b8bcac49d6239c548ed12
linux-user: Use ARRAY_SIZE with bitmask_transtbl

Rather than using a zero tuple to end the table, use a macro
to apply ARRAY_SIZE and pass that on to the convert functions.

This fixes two bugs in which the conversion functions required
that both the target and host masks be non-zero in order to
continue, rather than require both target and host masks be
zero in order to terminate.

This affected mmap_flags_tbl when the host does not support
all of the flags we wish to convert (e.g. MAP_UNINITIALIZED).
Mapping these flags to zero is good enough, and matches how
the kernel ignores bits that are unknown.

Fixes: 4b840f96 ("linux-user: Populate more bits in mmap_flags_tbl")
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
bsd-user/syscall_defs.h
include/exec/user/thunk.h
linux-user/syscall.c
linux-user/thunk.c