On Fri, Aug 08, 2025 at 10:08:13AM +0200, Markus Armbruster wrote: > tcg_region_init() calls one of qemu_mprotect_rwx(), > qemu_mprotect_rw(), and mprotect(), then reports failure with > error_setg_errno(&error_fatal, errno, ...). > > The use of &error_fatal is undesirable. qapi/error.h advises: > > * Please don't error_setg(&error_fatal, ...), use error_report() and > * exit(), because that's more obvious. > > The use of errno is wrong. qemu_mprotect_rwx() and qemu_mprotect_rw() > wrap around qemu_mprotect__osdep(). qemu_mprotect__osdep() calls > mprotect() on POSIX, VirtualProtect() on Windows, and reports failure > with error_report(). VirtualProtect() doesn't set errno. mprotect() > does, but error_report() may clobber it. > > Fix tcg_region_init() to report errors only when it calls mprotect(), > and rely on qemu_mprotect_rwx()'s and qemu_mprotect_rw()'s error > reporting otherwise. Use error_report(), not error_setg(). > > Fixes: 22c6a9938f75 (tcg: Merge buffer protection and guard page protection) > Fixes: 6bc144237a85 (tcg: Use Error with alloc_code_gen_buffer) > Cc: Richard Henderson <richard.hender...@linaro.org> > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > tcg/region.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-)
Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|