summaryrefslogtreecommitdiff
path: root/libre/qemu-user-static/0007-linux-user-init_guest_space-Clean-up-control-flow-a-.patch
diff options
context:
space:
mode:
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-.patch94
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
-