diff options
Diffstat (limited to 'libre/qemu-user-static/0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch')
-rw-r--r-- | libre/qemu-user-static/0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/libre/qemu-user-static/0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch b/libre/qemu-user-static/0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch deleted file mode 100644 index 59be04cf9..000000000 --- a/libre/qemu-user-static/0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch +++ /dev/null @@ -1,94 +0,0 @@ -From dbbba45fa37da85ac213fbbe1f7eab3e1de74b41 Mon Sep 17 00:00:00 2001 -From: Luke Shumaker <lukeshu@parabola.nu> -Date: Wed, 27 Dec 2017 21:17:52 -0500 -Subject: [PATCH 07/10] linux-user: init_guest_space: Clean up control flow a - bit - -Instead of doing - - if (check1) { - if (check2) { - success; - } - } - - retry; - -Do a clearer - - if (!check1) { - goto try_again; - } - - if (!check2) { - goto try_again; - } - - success; - - try_again: - retry; - -Besides being clearer, this makes it easier to insert more checks that -need to trigger a retry on check failure, or rearrange them, or anything -like that. - -Because some indentation is changing, "ignore space change" may be useful -for viewing this patch. - -Signed-off-by: Luke Shumaker <lukeshu@parabola.nu> ---- - linux-user/elfload.c | 34 +++++++++++++++++++--------------- - 1 file changed, 19 insertions(+), 15 deletions(-) - -diff --git a/linux-user/elfload.c b/linux-user/elfload.c -index b560f5d6fe..5c0ad65611 100644 ---- a/linux-user/elfload.c -+++ b/linux-user/elfload.c -@@ -1906,24 +1906,28 @@ unsigned long init_guest_space(unsigned long host_start, - } - - /* Check to see if the address is valid. */ -- if (!host_start || aligned_start == current_start) { -+ if (host_start && aligned_start != current_start) { -+ goto try_again; -+ } -+ - #if defined(TARGET_ARM) && !defined(TARGET_AARCH64) -- /* On 32-bit ARM, we need to also be able to map the commpage. */ -- int valid = init_guest_commpage(aligned_start - guest_start, -- aligned_size + guest_start); -- if (valid == 1) { -- break; -- } else if (valid == -1) { -- munmap((void *)real_start, real_size); -- return (unsigned long)-1; -- } -- /* valid == 0, so try again. */ --#else -- /* On other architectures, whatever we have here is fine. */ -- break; --#endif -+ /* On 32-bit ARM, we need to also be able to map the commpage. */ -+ int valid = init_guest_commpage(aligned_start - guest_start, -+ aligned_size + guest_start); -+ if (valid == -1) { -+ munmap((void *)real_start, real_size); -+ return (unsigned long)-1; -+ } else if (valid == -1) { -+ goto try_again; - } -+#endif -+ -+ /* If nothing has said `return -1` or `goto try_again` yet, -+ * then the address we have is good. -+ */ -+ break; - -+ try_again: - /* That address didn't work. Unmap and try a different one. - * The address the host picked because is typically right at - * the top of the host address space and leaves the guest with --- -2.15.1 - |