diff options
Diffstat (limited to 'linux-user/signal.c')
-rw-r--r-- | linux-user/signal.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/linux-user/signal.c b/linux-user/signal.c index 8d9e6e8410..e6dfe0adfd 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -1843,6 +1843,12 @@ static void target_setup_frame(int usig, struct target_sigaction *ka, layout.total_size += sizeof(struct target_aarch64_ctx); } + /* We must always provide at least the standard 4K reserved space, + * even if we don't use all of it (this is part of the ABI) + */ + layout.total_size = MAX(layout.total_size, + sizeof(struct target_rt_sigframe)); + /* Reserve space for the return code. On a real system this would * be within the VDSO. So, despite the name this is not a "real" * record within the frame. @@ -1850,12 +1856,6 @@ static void target_setup_frame(int usig, struct target_sigaction *ka, fr_ofs = layout.total_size; layout.total_size += sizeof(struct target_rt_frame_record); - /* We must always provide at least the standard 4K reserved space, - * even if we don't use all of it (this is part of the ABI) - */ - layout.total_size = MAX(layout.total_size, - sizeof(struct target_rt_sigframe)); - frame_addr = get_sigframe(ka, env, layout.total_size); trace_user_setup_frame(env, frame_addr); if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) { |