summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu
diff options
context:
space:
mode:
authorAlistair Francis <alistair.francis@wdc.com>2019-08-20 13:59:15 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-08-21 15:29:02 +0100
commit5a308c55a60282b475545f3c7346e5e8053aba3f (patch)
tree9d1e064e90031380751df842681594c18e18dd14 /meta/recipes-devtools/qemu
parent8102c55bc1851233d3c5632e47e0adfddc4b23f8 (diff)
downloadpoky-5a308c55a60282b475545f3c7346e5e8053aba3f.tar.gz
qemu: Upgrade to version 4.1
(From OE-Core rev: 50a7dec95618080962e56fd347f505e691b7ad6f) Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/qemu')
-rw-r--r--meta/recipes-devtools/qemu/qemu-native.inc4
-rw-r--r--meta/recipes-devtools/qemu/qemu-native_4.1.0.bb (renamed from meta/recipes-devtools/qemu/qemu-native_4.0.0.bb)0
-rw-r--r--meta/recipes-devtools/qemu/qemu-system-native_4.1.0.bb (renamed from meta/recipes-devtools/qemu/qemu-system-native_4.0.0.bb)2
-rw-r--r--meta/recipes-devtools/qemu/qemu.inc20
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch10
-rw-r--r--meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch6
-rw-r--r--meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch4
-rw-r--r--meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch6
-rw-r--r--meta/recipes-devtools/qemu/qemu/0005-qemu-Limit-paths-searched-during-user-mode-emulation.patch146
-rw-r--r--meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch (renamed from meta/recipes-devtools/qemu/qemu/0006-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch)6
-rw-r--r--meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch (renamed from meta/recipes-devtools/qemu/qemu/0007-chardev-connect-socket-to-a-spawned-command.patch)18
-rw-r--r--meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch (renamed from meta/recipes-devtools/qemu/qemu/0008-apic-fixup-fallthrough-to-PIC.patch)6
-rw-r--r--meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch (renamed from meta/recipes-devtools/qemu/qemu/0009-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch)6
-rw-r--r--meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch (renamed from meta/recipes-devtools/qemu/qemu/0010-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch)81
-rw-r--r--meta/recipes-devtools/qemu/qemu/0010-fix-libcap-header-issue-on-some-distro.patch (renamed from meta/recipes-devtools/qemu/qemu/0011-fix-libcap-header-issue-on-some-distro.patch)0
-rw-r--r--meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch (renamed from meta/recipes-devtools/qemu/qemu/0012-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch)2
-rw-r--r--meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch66
-rw-r--r--meta/recipes-devtools/qemu/qemu/0014-linux-user-fix-to-handle-variably-sized-SIOCGSTAMP-w.patch339
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2019-12155.patch35
-rw-r--r--meta/recipes-devtools/qemu/qemu_4.1.0.bb (renamed from meta/recipes-devtools/qemu/qemu_4.0.0.bb)0
20 files changed, 81 insertions, 676 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-native.inc b/meta/recipes-devtools/qemu/qemu-native.inc
index c04297cad0..69c2c43e6b 100644
--- a/meta/recipes-devtools/qemu/qemu-native.inc
+++ b/meta/recipes-devtools/qemu/qemu-native.inc
@@ -3,8 +3,8 @@ inherit native
3require qemu.inc 3require qemu.inc
4 4
5SRC_URI_append = " \ 5SRC_URI_append = " \
6 file://0011-fix-libcap-header-issue-on-some-distro.patch \ 6 file://0010-fix-libcap-header-issue-on-some-distro.patch \
7 file://0012-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \ 7 file://0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch \
8 " 8 "
9 9
10EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'" 10EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
diff --git a/meta/recipes-devtools/qemu/qemu-native_4.0.0.bb b/meta/recipes-devtools/qemu/qemu-native_4.1.0.bb
index c8acff8e19..c8acff8e19 100644
--- a/meta/recipes-devtools/qemu/qemu-native_4.0.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-native_4.1.0.bb
diff --git a/meta/recipes-devtools/qemu/qemu-system-native_4.0.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_4.1.0.bb
index 964dcee524..d83ee59375 100644
--- a/meta/recipes-devtools/qemu/qemu-system-native_4.0.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-system-native_4.1.0.bb
@@ -2,7 +2,7 @@ BPN = "qemu"
2 2
3require qemu-native.inc 3require qemu-native.inc
4 4
5# As some of the files installed by qemu-native and qemu-system-native 5# As some of the files installed by qemu-native and qemu-system-native
6# are the same, we depend on qemu-native to get the full installation set 6# are the same, we depend on qemu-native to get the full installation set
7# and avoid file clashes 7# and avoid file clashes
8DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native" 8DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native"
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 46c40b7d4f..d2dd2bc9c1 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -17,20 +17,16 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
17 file://0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \ 17 file://0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
18 file://0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch \ 18 file://0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
19 file://0004-qemu-disable-Valgrind.patch \ 19 file://0004-qemu-disable-Valgrind.patch \
20 file://0005-qemu-Limit-paths-searched-during-user-mode-emulation.patch \ 20 file://0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
21 file://0006-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \ 21 file://0006-chardev-connect-socket-to-a-spawned-command.patch \
22 file://0007-chardev-connect-socket-to-a-spawned-command.patch \ 22 file://0007-apic-fixup-fallthrough-to-PIC.patch \
23 file://0008-apic-fixup-fallthrough-to-PIC.patch \ 23 file://0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
24 file://0009-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \ 24 file://0009-Fix-webkitgtk-builds.patch \
25 file://0010-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch \
26 file://0013-target-arm-Fix-vector-operation-segfault.patch \
27 file://0014-linux-user-fix-to-handle-variably-sized-SIOCGSTAMP-w.patch \
28 file://CVE-2019-12155.patch \
29 " 25 "
30UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" 26UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
31 27
32SRC_URI[md5sum] = "0afeca336fd57ae3d3086ec07f59d708" 28SRC_URI[md5sum] = "cdf2b5ca52b9abac9bacb5842fa420f8"
33SRC_URI[sha256sum] = "13a93dfe75b86734326f8d5b475fde82ec692d5b5a338b4262aeeb6b0fa4e469" 29SRC_URI[sha256sum] = "656e60218689bdeec69903087fd7582d5d3e72238d02f4481d8dc6d79fd909c6"
34 30
35COMPATIBLE_HOST_mipsarchn32 = "null" 31COMPATIBLE_HOST_mipsarchn32 = "null"
36COMPATIBLE_HOST_mipsarchn64 = "null" 32COMPATIBLE_HOST_mipsarchn64 = "null"
@@ -141,7 +137,7 @@ PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses,"
141PACKAGECONFIG[gtk+] = "--enable-gtk,--disable-gtk,gtk+3 gettext-native" 137PACKAGECONFIG[gtk+] = "--enable-gtk,--disable-gtk,gtk+3 gettext-native"
142PACKAGECONFIG[vte] = "--enable-vte,--disable-vte,vte gettext-native" 138PACKAGECONFIG[vte] = "--enable-vte,--disable-vte,vte gettext-native"
143PACKAGECONFIG[libcap-ng] = "--enable-cap-ng,--disable-cap-ng,libcap-ng," 139PACKAGECONFIG[libcap-ng] = "--enable-cap-ng,--disable-cap-ng,libcap-ng,"
144PACKAGECONFIG[ssh2] = "--enable-libssh2,--disable-libssh2,libssh2," 140PACKAGECONFIG[ssh] = "--enable-libssh,--disable-libssh,libssh,"
145PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt," 141PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt,"
146PACKAGECONFIG[nettle] = "--enable-nettle,--disable-nettle,nettle" 142PACKAGECONFIG[nettle] = "--enable-nettle,--disable-nettle,nettle"
147PACKAGECONFIG[libusb] = "--enable-libusb,--disable-libusb,libusb1" 143PACKAGECONFIG[libusb] = "--enable-libusb,--disable-libusb,libusb1"
diff --git a/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch b/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch
index 5373915ff0..9478102ae5 100644
--- a/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch
+++ b/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch
@@ -1,4 +1,4 @@
1From 1cb804cf0e47116202011f3386b4739af668224a Mon Sep 17 00:00:00 2001 1From 4655dc18074e0be9d239f51dac32b61435da8549 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org> 2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Thu, 27 Nov 2014 14:04:29 +0000 3Date: Thu, 27 Nov 2014 14:04:29 +0000
4Subject: [PATCH] qemu: Add missing wacom HID descriptor 4Subject: [PATCH] qemu: Add missing wacom HID descriptor
@@ -19,10 +19,10 @@ Upstream-Status: Submitted
19 1 file changed, 93 insertions(+), 1 deletion(-) 19 1 file changed, 93 insertions(+), 1 deletion(-)
20 20
21diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c 21diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
22index ac0bc83b..6f9b22d4 100644 22index 8c43db93..3ff8ca28 100644
23--- a/hw/usb/dev-wacom.c 23--- a/hw/usb/dev-wacom.c
24+++ b/hw/usb/dev-wacom.c 24+++ b/hw/usb/dev-wacom.c
25@@ -72,6 +72,89 @@ static const USBDescStrings desc_strings = { 25@@ -74,6 +74,89 @@ static const USBDescStrings desc_strings = {
26 [STR_SERIALNUMBER] = "1", 26 [STR_SERIALNUMBER] = "1",
27 }; 27 };
28 28
@@ -112,7 +112,7 @@ index ac0bc83b..6f9b22d4 100644
112 static const USBDescIface desc_iface_wacom = { 112 static const USBDescIface desc_iface_wacom = {
113 .bInterfaceNumber = 0, 113 .bInterfaceNumber = 0,
114 .bNumEndpoints = 1, 114 .bNumEndpoints = 1,
115@@ -89,7 +172,7 @@ static const USBDescIface desc_iface_wacom = { 115@@ -91,7 +174,7 @@ static const USBDescIface desc_iface_wacom = {
116 0x00, /* u8 country_code */ 116 0x00, /* u8 country_code */
117 0x01, /* u8 num_descriptors */ 117 0x01, /* u8 num_descriptors */
118 0x22, /* u8 type: Report */ 118 0x22, /* u8 type: Report */
@@ -121,7 +121,7 @@ index ac0bc83b..6f9b22d4 100644
121 }, 121 },
122 }, 122 },
123 }, 123 },
124@@ -269,6 +352,15 @@ static void usb_wacom_handle_control(USBDevice *dev, USBPacket *p, 124@@ -271,6 +354,15 @@ static void usb_wacom_handle_control(USBDevice *dev, USBPacket *p,
125 } 125 }
126 126
127 switch (request) { 127 switch (request) {
diff --git a/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch b/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
index 7b7c5d71a0..2ccddd53cf 100644
--- a/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
+++ b/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
@@ -1,4 +1,4 @@
1From 281116b31981b0b9e174bda8abe00f4eaa33c2ae Mon Sep 17 00:00:00 2001 1From 67751f3a23e3db3012f391b3b3b73a4484488ce9 Mon Sep 17 00:00:00 2001
2From: Juro Bystricky <juro.bystricky@intel.com> 2From: Juro Bystricky <juro.bystricky@intel.com>
3Date: Thu, 31 Aug 2017 11:06:56 -0700 3Date: Thu, 31 Aug 2017 11:06:56 -0700
4Subject: [PATCH] Add subpackage -ptest which runs all unit test cases for 4Subject: [PATCH] Add subpackage -ptest which runs all unit test cases for
@@ -15,10 +15,10 @@ Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
15 1 file changed, 8 insertions(+) 15 1 file changed, 8 insertions(+)
16 16
17diff --git a/tests/Makefile.include b/tests/Makefile.include 17diff --git a/tests/Makefile.include b/tests/Makefile.include
18index 36fc73fe..01fecd4d 100644 18index fd7fdb86..83b7f409 100644
19--- a/tests/Makefile.include 19--- a/tests/Makefile.include
20+++ b/tests/Makefile.include 20+++ b/tests/Makefile.include
21@@ -1184,4 +1184,12 @@ all: $(QEMU_IOTESTS_HELPERS-y) 21@@ -1183,4 +1183,12 @@ all: $(QEMU_IOTESTS_HELPERS-y)
22 -include $(wildcard tests/*.d) 22 -include $(wildcard tests/*.d)
23 -include $(wildcard tests/libqos/*.d) 23 -include $(wildcard tests/libqos/*.d)
24 24
diff --git a/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch b/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch
index 9a18ca18e4..5c42d68030 100644
--- a/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch
+++ b/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch
@@ -1,4 +1,4 @@
1From bf04acef9ec31ddcc18ddbb4ac5b7b1e7368bf7d Mon Sep 17 00:00:00 2001 1From 235b94f1188597873c8776b019fed49947983392 Mon Sep 17 00:00:00 2001
2From: Jason Wessel <jason.wessel@windriver.com> 2From: Jason Wessel <jason.wessel@windriver.com>
3Date: Fri, 28 Mar 2014 17:42:43 +0800 3Date: Fri, 28 Mar 2014 17:42:43 +0800
4Subject: [PATCH] qemu: Add addition environment space to boot loader 4Subject: [PATCH] qemu: Add addition environment space to boot loader
@@ -19,7 +19,7 @@ Signed-off-by: Roy Li <rongqing.li@windriver.com>
19 1 file changed, 1 insertion(+), 1 deletion(-) 19 1 file changed, 1 insertion(+), 1 deletion(-)
20 20
21diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c 21diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
22index 439665ab..285c78ef 100644 22index 20e019bf..d150b01c 100644
23--- a/hw/mips/mips_malta.c 23--- a/hw/mips/mips_malta.c
24+++ b/hw/mips/mips_malta.c 24+++ b/hw/mips/mips_malta.c
25@@ -60,7 +60,7 @@ 25@@ -60,7 +60,7 @@
diff --git a/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch b/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
index 9e326081f2..0ac4ab40b1 100644
--- a/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
+++ b/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
@@ -1,4 +1,4 @@
1From e40f797548bc3ff06c71b6cbe042a46406894d18 Mon Sep 17 00:00:00 2001 1From 3ad7a375015d47fdf5016e03e11fa93440d6d8bd Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@intel.com> 2From: Ross Burton <ross.burton@intel.com>
3Date: Tue, 20 Oct 2015 22:19:08 +0100 3Date: Tue, 20 Oct 2015 22:19:08 +0100
4Subject: [PATCH] qemu: disable Valgrind 4Subject: [PATCH] qemu: disable Valgrind
@@ -13,10 +13,10 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
13 1 file changed, 9 deletions(-) 13 1 file changed, 9 deletions(-)
14 14
15diff --git a/configure b/configure 15diff --git a/configure b/configure
16index 1c563a70..eaf9bb5e 100755 16index 714e7fb6..dad4fc59 100755
17--- a/configure 17--- a/configure
18+++ b/configure 18+++ b/configure
19@@ -5311,15 +5311,6 @@ fi 19@@ -5335,15 +5335,6 @@ fi
20 # check if we have valgrind/valgrind.h 20 # check if we have valgrind/valgrind.h
21 21
22 valgrind_h=no 22 valgrind_h=no
diff --git a/meta/recipes-devtools/qemu/qemu/0005-qemu-Limit-paths-searched-during-user-mode-emulation.patch b/meta/recipes-devtools/qemu/qemu/0005-qemu-Limit-paths-searched-during-user-mode-emulation.patch
deleted file mode 100644
index 819720a3f2..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0005-qemu-Limit-paths-searched-during-user-mode-emulation.patch
+++ /dev/null
@@ -1,146 +0,0 @@
1From 547c3710a1493d2fd6bb56b819cf162db433756a Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Wed, 9 Mar 2016 22:49:02 +0000
4Subject: [PATCH] qemu: Limit paths searched during user mode emulation
5
6By default qemu builds a complete list of directories within the user
7emulation sysroot (-L option). The OE sysroot directory is large and
8this is confusing, for example it indexes all pkgdata. In particular this
9confuses strace of qemu binaries with tons of irrelevant paths.
10
11This patch stops the code indexing up front and instead only indexes
12things if/as/when it needs to. This drastically reduces the files it
13reads and reduces memory usage and cleans up strace.
14
15It would also avoid the infinite directory traversal bug in [YOCTO #6996]
16although the code could still be vulnerable if it parsed those specific
17paths.
18
19RP
202016/3/9
21Upstream-Status: Pending
22
23---
24 util/path.c | 44 ++++++++++++++++++++++----------------------
25 1 file changed, 22 insertions(+), 22 deletions(-)
26
27diff --git a/util/path.c b/util/path.c
28index 7f9fc272..a416cd4a 100644
29--- a/util/path.c
30+++ b/util/path.c
31@@ -15,6 +15,7 @@ struct pathelem
32 char *name;
33 /* Full path name, eg. /usr/gnemul/x86-linux/lib. */
34 char *pathname;
35+ int populated_entries;
36 struct pathelem *parent;
37 /* Children */
38 unsigned int num_entries;
39@@ -45,6 +46,7 @@ static struct pathelem *new_entry(const char *root,
40 new->name = g_strdup(name);
41 new->pathname = g_strdup_printf("%s/%s", root, name);
42 new->num_entries = 0;
43+ new->populated_entries = 0;
44 return new;
45 }
46
47@@ -53,15 +55,16 @@ static struct pathelem *new_entry(const char *root,
48 /* Not all systems provide this feature */
49 #if defined(DT_DIR) && defined(DT_UNKNOWN) && defined(DT_LNK)
50 # define dirent_type(dirent) ((dirent)->d_type)
51-# define is_dir_maybe(type) \
52- ((type) == DT_DIR || (type) == DT_UNKNOWN || (type) == DT_LNK)
53+# define is_not_dir(type) \
54+ ((type) != DT_DIR && (type) != DT_UNKNOWN && (type) != DT_LNK)
55 #else
56 # define dirent_type(dirent) (1)
57-# define is_dir_maybe(type) (type)
58+# define is_not_dir(type) (0)
59 #endif
60
61 static struct pathelem *add_dir_maybe(struct pathelem *path)
62 {
63+ unsigned int i;
64 DIR *dir;
65
66 if ((dir = opendir(path->pathname)) != NULL) {
67@@ -74,6 +77,11 @@ static struct pathelem *add_dir_maybe(struct pathelem *path)
68 }
69 closedir(dir);
70 }
71+
72+ for (i = 0; i < path->num_entries; i++)
73+ (path->entries[i])->parent = path;
74+
75+ path->populated_entries = 1;
76 return path;
77 }
78
79@@ -89,26 +97,16 @@ static struct pathelem *add_entry(struct pathelem *root, const char *name,
80 e = &root->entries[root->num_entries-1];
81
82 *e = new_entry(root->pathname, root, name);
83- if (is_dir_maybe(type)) {
84- *e = add_dir_maybe(*e);
85+ if (is_not_dir(type)) {
86+ (*e)->populated_entries = 1;
87 }
88
89 return root;
90 }
91
92-/* This needs to be done after tree is stabilized (ie. no more reallocs!). */
93-static void set_parents(struct pathelem *child, struct pathelem *parent)
94-{
95- unsigned int i;
96-
97- child->parent = parent;
98- for (i = 0; i < child->num_entries; i++)
99- set_parents(child->entries[i], child);
100-}
101-
102 /* FIXME: Doesn't handle DIR/.. where DIR is not in emulated dir. */
103 static const char *
104-follow_path(const struct pathelem *cursor, const char *name)
105+follow_path(struct pathelem *cursor, struct pathelem **source, const char *name)
106 {
107 unsigned int i, namelen;
108
109@@ -119,14 +117,18 @@ follow_path(const struct pathelem *cursor, const char *name)
110 return cursor->pathname;
111
112 if (strneq(name, namelen, ".."))
113- return follow_path(cursor->parent, name + namelen);
114+ return follow_path(cursor->parent, &cursor->parent, name + namelen);
115
116 if (strneq(name, namelen, "."))
117- return follow_path(cursor, name + namelen);
118+ return follow_path(cursor, source, name + namelen);
119+
120+ if (!cursor->populated_entries)
121+ *source = add_dir_maybe(cursor);
122+ cursor = *source;
123
124 for (i = 0; i < cursor->num_entries; i++)
125 if (strneq(name, namelen, cursor->entries[i]->name))
126- return follow_path(cursor->entries[i], name + namelen);
127+ return follow_path(cursor->entries[i], &cursor->entries[i], name + namelen);
128
129 /* Not found */
130 return NULL;
131@@ -160,8 +162,6 @@ void init_paths(const char *prefix)
132 g_free(base->name);
133 g_free(base);
134 base = NULL;
135- } else {
136- set_parents(base, base);
137 }
138 }
139
140@@ -173,5 +173,5 @@ const char *path(const char *name)
141 if (!base || !name || name[0] != '/')
142 return name;
143
144- return follow_path(base, name) ?: name;
145+ return follow_path(base, &base, name) ?: name;
146 }
diff --git a/meta/recipes-devtools/qemu/qemu/0006-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch b/meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
index b62a588c66..a73681510e 100644
--- a/meta/recipes-devtools/qemu/qemu/0006-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
+++ b/meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
@@ -1,4 +1,4 @@
1From 107fd860529a3c1319d54c3c225758457b0d9394 Mon Sep 17 00:00:00 2001 1From 80e6070bcdfe636b103a13598e6c38ad0d0e7624 Mon Sep 17 00:00:00 2001
2From: Stephen Arnold <sarnold@vctlabs.com> 2From: Stephen Arnold <sarnold@vctlabs.com>
3Date: Sun, 12 Jun 2016 18:09:56 -0700 3Date: Sun, 12 Jun 2016 18:09:56 -0700
4Subject: [PATCH] qemu-native: set ld.bfd, fix cflags, and set some environment 4Subject: [PATCH] qemu-native: set ld.bfd, fix cflags, and set some environment
@@ -10,10 +10,10 @@ Upstream-Status: Pending
10 1 file changed, 4 deletions(-) 10 1 file changed, 4 deletions(-)
11 11
12diff --git a/configure b/configure 12diff --git a/configure b/configure
13index eaf9bb5e..de2933d1 100755 13index dad4fc59..685bbe5e 100755
14--- a/configure 14--- a/configure
15+++ b/configure 15+++ b/configure
16@@ -5928,10 +5928,6 @@ write_c_skeleton 16@@ -5971,10 +5971,6 @@ write_c_skeleton
17 if test "$gcov" = "yes" ; then 17 if test "$gcov" = "yes" ; then
18 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 18 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
19 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 19 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
diff --git a/meta/recipes-devtools/qemu/qemu/0007-chardev-connect-socket-to-a-spawned-command.patch b/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch
index f3f3dc3f5e..a42385530f 100644
--- a/meta/recipes-devtools/qemu/qemu/0007-chardev-connect-socket-to-a-spawned-command.patch
+++ b/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch
@@ -1,4 +1,4 @@
1From 136e159482a1bc8676cbe6e767055d0c3fb20065 Mon Sep 17 00:00:00 2001 1From ad853601e75f6d0dd09672bcca05fbe4fac766a4 Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair.francis@xilinx.com> 2From: Alistair Francis <alistair.francis@xilinx.com>
3Date: Thu, 21 Dec 2017 11:35:16 -0800 3Date: Thu, 21 Dec 2017 11:35:16 -0800
4Subject: [PATCH] chardev: connect socket to a spawned command 4Subject: [PATCH] chardev: connect socket to a spawned command
@@ -52,10 +52,10 @@ Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
52 3 files changed, 109 insertions(+) 52 3 files changed, 109 insertions(+)
53 53
54diff --git a/chardev/char-socket.c b/chardev/char-socket.c 54diff --git a/chardev/char-socket.c b/chardev/char-socket.c
55index 3916505d..a8e9dce8 100644 55index 7ca5d97a..207fae4a 100644
56--- a/chardev/char-socket.c 56--- a/chardev/char-socket.c
57+++ b/chardev/char-socket.c 57+++ b/chardev/char-socket.c
58@@ -1273,6 +1273,67 @@ static bool qmp_chardev_validate_socket(ChardevSocket *sock, 58@@ -1278,6 +1278,67 @@ static bool qmp_chardev_validate_socket(ChardevSocket *sock,
59 return true; 59 return true;
60 } 60 }
61 61
@@ -123,7 +123,7 @@ index 3916505d..a8e9dce8 100644
123 123
124 static void qmp_chardev_open_socket(Chardev *chr, 124 static void qmp_chardev_open_socket(Chardev *chr,
125 ChardevBackend *backend, 125 ChardevBackend *backend,
126@@ -1281,6 +1342,9 @@ static void qmp_chardev_open_socket(Chardev *chr, 126@@ -1286,6 +1347,9 @@ static void qmp_chardev_open_socket(Chardev *chr,
127 { 127 {
128 SocketChardev *s = SOCKET_CHARDEV(chr); 128 SocketChardev *s = SOCKET_CHARDEV(chr);
129 ChardevSocket *sock = backend->u.socket.data; 129 ChardevSocket *sock = backend->u.socket.data;
@@ -133,7 +133,7 @@ index 3916505d..a8e9dce8 100644
133 bool do_nodelay = sock->has_nodelay ? sock->nodelay : false; 133 bool do_nodelay = sock->has_nodelay ? sock->nodelay : false;
134 bool is_listen = sock->has_server ? sock->server : true; 134 bool is_listen = sock->has_server ? sock->server : true;
135 bool is_telnet = sock->has_telnet ? sock->telnet : false; 135 bool is_telnet = sock->has_telnet ? sock->telnet : false;
136@@ -1346,6 +1410,14 @@ static void qmp_chardev_open_socket(Chardev *chr, 136@@ -1351,6 +1415,14 @@ static void qmp_chardev_open_socket(Chardev *chr,
137 137
138 update_disconnected_filename(s); 138 update_disconnected_filename(s);
139 139
@@ -148,7 +148,7 @@ index 3916505d..a8e9dce8 100644
148 if (s->is_listen) { 148 if (s->is_listen) {
149 if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270, 149 if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270,
150 is_waitconnect, errp) < 0) { 150 is_waitconnect, errp) < 0) {
151@@ -1365,9 +1437,26 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, 151@@ -1370,9 +1442,26 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
152 const char *host = qemu_opt_get(opts, "host"); 152 const char *host = qemu_opt_get(opts, "host");
153 const char *port = qemu_opt_get(opts, "port"); 153 const char *port = qemu_opt_get(opts, "port");
154 const char *fd = qemu_opt_get(opts, "fd"); 154 const char *fd = qemu_opt_get(opts, "fd");
@@ -175,7 +175,7 @@ index 3916505d..a8e9dce8 100644
175 if ((!!path + !!fd + !!host) != 1) { 175 if ((!!path + !!fd + !!host) != 1) {
176 error_setg(errp, 176 error_setg(errp,
177 "Exactly one of 'path', 'fd' or 'host' required"); 177 "Exactly one of 'path', 'fd' or 'host' required");
178@@ -1410,12 +1499,24 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, 178@@ -1415,12 +1504,24 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
179 sock->has_tls_authz = qemu_opt_get(opts, "tls-authz"); 179 sock->has_tls_authz = qemu_opt_get(opts, "tls-authz");
180 sock->tls_authz = g_strdup(qemu_opt_get(opts, "tls-authz")); 180 sock->tls_authz = g_strdup(qemu_opt_get(opts, "tls-authz"));
181 181
@@ -201,10 +201,10 @@ index 3916505d..a8e9dce8 100644
201 addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET; 201 addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET;
202 addr->u.inet.data = g_new(InetSocketAddress, 1); 202 addr->u.inet.data = g_new(InetSocketAddress, 1);
203diff --git a/chardev/char.c b/chardev/char.c 203diff --git a/chardev/char.c b/chardev/char.c
204index 514cd6b0..36a40d67 100644 204index 7b6b2cb1..0c2ca64b 100644
205--- a/chardev/char.c 205--- a/chardev/char.c
206+++ b/chardev/char.c 206+++ b/chardev/char.c
207@@ -835,6 +835,9 @@ QemuOptsList qemu_chardev_opts = { 207@@ -837,6 +837,9 @@ QemuOptsList qemu_chardev_opts = {
208 },{ 208 },{
209 .name = "path", 209 .name = "path",
210 .type = QEMU_OPT_STRING, 210 .type = QEMU_OPT_STRING,
diff --git a/meta/recipes-devtools/qemu/qemu/0008-apic-fixup-fallthrough-to-PIC.patch b/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch
index 13037f33f3..b50e8c2545 100644
--- a/meta/recipes-devtools/qemu/qemu/0008-apic-fixup-fallthrough-to-PIC.patch
+++ b/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch
@@ -1,4 +1,4 @@
1From 1b3f264e2ba18caf658fae27293c426c8366c6a3 Mon Sep 17 00:00:00 2001 1From f51e49e7d7d87b7254242b7360f99c2df94a5a2d Mon Sep 17 00:00:00 2001
2From: Mark Asselstine <mark.asselstine@windriver.com> 2From: Mark Asselstine <mark.asselstine@windriver.com>
3Date: Tue, 26 Feb 2013 11:43:28 -0500 3Date: Tue, 26 Feb 2013 11:43:28 -0500
4Subject: [PATCH] apic: fixup fallthrough to PIC 4Subject: [PATCH] apic: fixup fallthrough to PIC
@@ -30,10 +30,10 @@ Signed-off-by: He Zhe <zhe.he@windriver.com>
30 1 file changed, 1 insertion(+), 1 deletion(-) 30 1 file changed, 1 insertion(+), 1 deletion(-)
31 31
32diff --git a/hw/intc/apic.c b/hw/intc/apic.c 32diff --git a/hw/intc/apic.c b/hw/intc/apic.c
33index 6ea619c3..f892811e 100644 33index bce89911..df4b582e 100644
34--- a/hw/intc/apic.c 34--- a/hw/intc/apic.c
35+++ b/hw/intc/apic.c 35+++ b/hw/intc/apic.c
36@@ -604,7 +604,7 @@ int apic_accept_pic_intr(DeviceState *dev) 36@@ -603,7 +603,7 @@ int apic_accept_pic_intr(DeviceState *dev)
37 APICCommonState *s = APIC(dev); 37 APICCommonState *s = APIC(dev);
38 uint32_t lvt0; 38 uint32_t lvt0;
39 39
diff --git a/meta/recipes-devtools/qemu/qemu/0009-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch b/meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
index c572ff94d0..e562f25bec 100644
--- a/meta/recipes-devtools/qemu/qemu/0009-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
+++ b/meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
@@ -1,4 +1,4 @@
1From a33ae91504ea4d254b5ace64a84791d3c96c9773 Mon Sep 17 00:00:00 2001 1From 25a064f91f73630e5dff2a6aeb23d953c469cea6 Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair.francis@xilinx.com> 2From: Alistair Francis <alistair.francis@xilinx.com>
3Date: Wed, 17 Jan 2018 10:51:49 -0800 3Date: Wed, 17 Jan 2018 10:51:49 -0800
4Subject: [PATCH] linux-user: Fix webkitgtk hangs on 32-bit x86 target 4Subject: [PATCH] linux-user: Fix webkitgtk hangs on 32-bit x86 target
@@ -19,10 +19,10 @@ Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
19 1 file changed, 1 insertion(+), 1 deletion(-) 19 1 file changed, 1 insertion(+), 1 deletion(-)
20 20
21diff --git a/linux-user/main.c b/linux-user/main.c 21diff --git a/linux-user/main.c b/linux-user/main.c
22index a0aba9cb..34c54924 100644 22index 8ffc5251..4067e739 100644
23--- a/linux-user/main.c 23--- a/linux-user/main.c
24+++ b/linux-user/main.c 24+++ b/linux-user/main.c
25@@ -69,7 +69,7 @@ int have_guest_base; 25@@ -77,7 +77,7 @@ int have_guest_base;
26 (TARGET_LONG_BITS == 32 || defined(TARGET_ABI32)) 26 (TARGET_LONG_BITS == 32 || defined(TARGET_ABI32))
27 /* There are a number of places where we assign reserved_va to a variable 27 /* There are a number of places where we assign reserved_va to a variable
28 of type abi_ulong and expect it to fit. Avoid the last page. */ 28 of type abi_ulong and expect it to fit. Avoid the last page. */
diff --git a/meta/recipes-devtools/qemu/qemu/0010-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch b/meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch
index 3418eb7c65..4072d9455f 100644
--- a/meta/recipes-devtools/qemu/qemu/0010-Revert-linux-user-fix-mmap-munmap-mprotect-mremap-sh.patch
+++ b/meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch
@@ -1,32 +1,35 @@
1From 2a66bd95c856de6950fbd802c5b99075207c1d76 Mon Sep 17 00:00:00 2001 1From b633b9a1813fcd715dce44659a89293f1c64ae8c Mon Sep 17 00:00:00 2001
2From: Martin Jansa <martin.jansa@lge.com> 2From: Martin Jansa <martin.jansa@lge.com>
3Date: Fri, 1 Jun 2018 08:41:07 +0000 3Date: Fri, 1 Jun 2018 08:41:07 +0000
4Subject: [PATCH] Revert "linux-user: fix mmap/munmap/mprotect/mremap/shmat" 4Subject: [PATCH] Fix webkitgtk builds
5 5
6Causes qemu-i386 to hang during gobject-introspection in webkitgtk build 6This is a partial revert of "linux-user: fix mmap/munmap/mprotect/mremap/shmat".
7when musl is used on qemux86 - the same issue as 7
80010-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch 8This patch fixes qemu-i386 hangs during gobject-introspection in webkitgtk build
9was fixing in 2.11.0 release, but with this patch the fix no longer worked 9when musl is used on qemux86. This is the same issue that
10as discussed here: 100008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch was
11http://lists.openembedded.org/pipermail/openembedded-core/2018-May/150302.html 11fixing in the 2.11 release.
12http://lists.openembedded.org/pipermail/openembedded-core/2018-June/151382.html 12
13This patch also fixes a build failure when building webkitgtk for
14qemumips. A QEMU assert is seen while building webkitgtk:
15page_check_range: Assertion `start < ((target_ulong)1 << L1_MAP_ADDR_SPACE_BITS)' failed.
13 16
14This reverts commit ebf9a3630c911d0cfc9c20f7cafe9ba4f88cf583. 17This reverts commit ebf9a3630c911d0cfc9c20f7cafe9ba4f88cf583.
15 18
16Upstream-Status: Pending 19Upstream-Status: Pending
17 20Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
18--- 21---
19 include/exec/cpu-all.h | 6 +----- 22 include/exec/cpu-all.h | 6 +-----
20 include/exec/cpu_ldst.h | 16 +++++++++------- 23 include/exec/cpu_ldst.h | 5 ++++-
21 linux-user/mmap.c | 17 ++++------------- 24 linux-user/mmap.c | 17 ++++-------------
22 linux-user/syscall.c | 5 +---- 25 linux-user/syscall.c | 5 +----
23 4 files changed, 15 insertions(+), 29 deletions(-) 26 4 files changed, 10 insertions(+), 23 deletions(-)
24 27
25diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h 28diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
26index b16c9ec5..612db6a0 100644 29index 536ea58f81..4c63a6a2e4 100644
27--- a/include/exec/cpu-all.h 30--- a/include/exec/cpu-all.h
28+++ b/include/exec/cpu-all.h 31+++ b/include/exec/cpu-all.h
29@@ -163,12 +163,8 @@ extern unsigned long guest_base; 32@@ -162,12 +162,8 @@ extern unsigned long guest_base;
30 extern int have_guest_base; 33 extern int have_guest_base;
31 extern unsigned long reserved_va; 34 extern unsigned long reserved_va;
32 35
@@ -41,37 +44,26 @@ index b16c9ec5..612db6a0 100644
41 44
42 #include "exec/hwaddr.h" 45 #include "exec/hwaddr.h"
43diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h 46diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
44index d78041d7..845639f7 100644 47index 9151fdb042..cb2b8f329f 100644
45--- a/include/exec/cpu_ldst.h 48--- a/include/exec/cpu_ldst.h
46+++ b/include/exec/cpu_ldst.h 49+++ b/include/exec/cpu_ldst.h
47@@ -62,13 +62,15 @@ typedef uint64_t abi_ptr; 50@@ -65,7 +65,10 @@ typedef uint64_t abi_ptr;
48 /* All direct uses of g2h and h2g need to go away for usermode softmmu. */ 51 #if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
49 #define g2h(x) ((void *)((unsigned long)(abi_ptr)(x) + guest_base)) 52 #define guest_addr_valid(x) (1)
50 53 #else
51-#define guest_addr_valid(x) ((x) <= GUEST_ADDR_MAX) 54-#define guest_addr_valid(x) ((x) <= GUEST_ADDR_MAX)
52-#define h2g_valid(x) guest_addr_valid((unsigned long)(x) - guest_base) 55+#define guest_addr_valid(x) ({ \
53- 56+ ((x) < (1ul << TARGET_VIRT_ADDR_SPACE_BITS)) && \
54-static inline int guest_range_valid(unsigned long start, unsigned long len) 57+ (!reserved_va || ((x) < reserved_va)); \
55-{
56- return len - 1 <= GUEST_ADDR_MAX && start <= GUEST_ADDR_MAX - len + 1;
57-}
58+#if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
59+#define h2g_valid(x) 1
60+#else
61+#define h2g_valid(x) ({ \
62+ unsigned long __guest = (unsigned long)(x) - guest_base; \
63+ (__guest < (1ul << TARGET_VIRT_ADDR_SPACE_BITS)) && \
64+ (!reserved_va || (__guest < reserved_va)); \
65+}) 58+})
66+#endif 59 #endif
60 #define h2g_valid(x) guest_addr_valid((unsigned long)(x) - guest_base)
67 61
68 #define h2g_nocheck(x) ({ \
69 unsigned long __ret = (unsigned long)(x) - guest_base; \
70diff --git a/linux-user/mmap.c b/linux-user/mmap.c 62diff --git a/linux-user/mmap.c b/linux-user/mmap.c
71index e0249efe..cfe34b35 100644 63index 46a6e3a761..7735465462 100644
72--- a/linux-user/mmap.c 64--- a/linux-user/mmap.c
73+++ b/linux-user/mmap.c 65+++ b/linux-user/mmap.c
74@@ -79,7 +79,7 @@ int target_mprotect(abi_ulong start, abi_ulong len, int prot) 66@@ -78,7 +78,7 @@ int target_mprotect(abi_ulong start, abi_ulong len, int prot)
75 return -TARGET_EINVAL; 67 return -TARGET_EINVAL;
76 len = TARGET_PAGE_ALIGN(len); 68 len = TARGET_PAGE_ALIGN(len);
77 end = start + len; 69 end = start + len;
@@ -80,7 +72,7 @@ index e0249efe..cfe34b35 100644
80 return -TARGET_ENOMEM; 72 return -TARGET_ENOMEM;
81 } 73 }
82 prot &= PROT_READ | PROT_WRITE | PROT_EXEC; 74 prot &= PROT_READ | PROT_WRITE | PROT_EXEC;
83@@ -490,8 +490,8 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, 75@@ -495,8 +495,8 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
84 * It can fail only on 64-bit host with 32-bit target. 76 * It can fail only on 64-bit host with 32-bit target.
85 * On any other target/host host mmap() handles this error correctly. 77 * On any other target/host host mmap() handles this error correctly.
86 */ 78 */
@@ -91,7 +83,7 @@ index e0249efe..cfe34b35 100644
91 goto fail; 83 goto fail;
92 } 84 }
93 85
94@@ -631,10 +631,8 @@ int target_munmap(abi_ulong start, abi_ulong len) 86@@ -636,10 +636,8 @@ int target_munmap(abi_ulong start, abi_ulong len)
95 if (start & ~TARGET_PAGE_MASK) 87 if (start & ~TARGET_PAGE_MASK)
96 return -TARGET_EINVAL; 88 return -TARGET_EINVAL;
97 len = TARGET_PAGE_ALIGN(len); 89 len = TARGET_PAGE_ALIGN(len);
@@ -103,7 +95,7 @@ index e0249efe..cfe34b35 100644
103 mmap_lock(); 95 mmap_lock();
104 end = start + len; 96 end = start + len;
105 real_start = start & qemu_host_page_mask; 97 real_start = start & qemu_host_page_mask;
106@@ -689,13 +687,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, 98@@ -694,13 +692,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
107 int prot; 99 int prot;
108 void *host_addr; 100 void *host_addr;
109 101
@@ -118,10 +110,10 @@ index e0249efe..cfe34b35 100644
118 110
119 if (flags & MREMAP_FIXED) { 111 if (flags & MREMAP_FIXED) {
120diff --git a/linux-user/syscall.c b/linux-user/syscall.c 112diff --git a/linux-user/syscall.c b/linux-user/syscall.c
121index 96cd4bf8..e6754772 100644 113index 8b41a03901..bc5d85de02 100644
122--- a/linux-user/syscall.c 114--- a/linux-user/syscall.c
123+++ b/linux-user/syscall.c 115+++ b/linux-user/syscall.c
124@@ -3860,9 +3860,6 @@ static inline abi_ulong do_shmat(CPUArchState *cpu_env, 116@@ -4031,9 +4031,6 @@ static inline abi_ulong do_shmat(CPUArchState *cpu_env,
125 return -TARGET_EINVAL; 117 return -TARGET_EINVAL;
126 } 118 }
127 } 119 }
@@ -131,7 +123,7 @@ index 96cd4bf8..e6754772 100644
131 123
132 mmap_lock(); 124 mmap_lock();
133 125
134@@ -6633,7 +6630,7 @@ static int open_self_maps(void *cpu_env, int fd) 126@@ -6881,7 +6878,7 @@ static int open_self_maps(void *cpu_env, int fd)
135 } 127 }
136 if (h2g_valid(min)) { 128 if (h2g_valid(min)) {
137 int flags = page_get_flags(h2g(min)); 129 int flags = page_get_flags(h2g(min));
@@ -140,3 +132,6 @@ index 96cd4bf8..e6754772 100644
140 if (page_check_range(h2g(min), max - min, flags) == -1) { 132 if (page_check_range(h2g(min), max - min, flags) == -1) {
141 continue; 133 continue;
142 } 134 }
135--
1362.22.0
137
diff --git a/meta/recipes-devtools/qemu/qemu/0011-fix-libcap-header-issue-on-some-distro.patch b/meta/recipes-devtools/qemu/qemu/0010-fix-libcap-header-issue-on-some-distro.patch
index 3a7d7bbd33..3a7d7bbd33 100644
--- a/meta/recipes-devtools/qemu/qemu/0011-fix-libcap-header-issue-on-some-distro.patch
+++ b/meta/recipes-devtools/qemu/qemu/0010-fix-libcap-header-issue-on-some-distro.patch
diff --git a/meta/recipes-devtools/qemu/qemu/0012-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch b/meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
index 04664195d1..e5ebfc1267 100644
--- a/meta/recipes-devtools/qemu/qemu/0012-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
+++ b/meta/recipes-devtools/qemu/qemu/0011-cpus.c-Add-error-messages-when-qemi_cpu_kick_thread-.patch
@@ -37,7 +37,7 @@ index e83f72b4..e6e2576e 100644
37 if (err && err != ESRCH) { 37 if (err && err != ESRCH) {
38 fprintf(stderr, "qemu:%s: %s", __func__, strerror(err)); 38 fprintf(stderr, "qemu:%s: %s", __func__, strerror(err));
39+ fprintf(stderr, "CPU #%d:\n", cpu->cpu_index); 39+ fprintf(stderr, "CPU #%d:\n", cpu->cpu_index);
40+ cpu_dump_state(cpu, stderr, fprintf, 0); 40+ cpu_dump_state(cpu, stderr, 0);
41+ backtrace_print(); 41+ backtrace_print();
42 exit(1); 42 exit(1);
43 } 43 }
diff --git a/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch b/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch
deleted file mode 100644
index c1dd957dc9..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0013-target-arm-Fix-vector-operation-segfault.patch
+++ /dev/null
@@ -1,66 +0,0 @@
1From 2f143d3ad1c05e91cf2cdf5de06d59a80a95e6c8 Mon Sep 17 00:00:00 2001
2From: Alistair Francis <alistair.francis@wdc.com>
3Date: Thu, 23 May 2019 14:47:43 +0100
4Subject: [PATCH] target/arm: Fix vector operation segfault
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Commit 89e68b575 "target/arm: Use vector operations for saturation"
10causes this abort() when booting QEMU ARM with a Cortex-A15:
11
120 0x00007ffff4c2382f in raise () at /usr/lib/libc.so.6
131 0x00007ffff4c0e672 in abort () at /usr/lib/libc.so.6
142 0x00005555559c1839 in disas_neon_data_insn (insn=<optimized out>, s=<optimized out>) at ./target/arm/translate.c:6673
153 0x00005555559c1839 in disas_neon_data_insn (s=<optimized out>, insn=<optimized out>) at ./target/arm/translate.c:6386
164 0x00005555559cd8a4 in disas_arm_insn (insn=4081107068, s=0x7fffe59a9510) at ./target/arm/translate.c:9289
175 0x00005555559cd8a4 in arm_tr_translate_insn (dcbase=0x7fffe59a9510, cpu=<optimized out>) at ./target/arm/translate.c:13612
186 0x00005555558d1d39 in translator_loop (ops=0x5555561cc580 <arm_translator_ops>, db=0x7fffe59a9510, cpu=0x55555686a2f0, tb=<optimized out>, max_insns=<optimized out>) at ./accel/tcg/translator.c:96
197 0x00005555559d10d4 in gen_intermediate_code (cpu=cpu@entry=0x55555686a2f0, tb=tb@entry=0x7fffd7840080 <code_gen_buffer+126091347>, max_insns=max_insns@entry=512) at ./target/arm/translate.c:13901
208 0x00005555558d06b9 in tb_gen_code (cpu=cpu@entry=0x55555686a2f0, pc=3067096216, cs_base=0, flags=192, cflags=-16252928, cflags@entry=524288) at ./accel/tcg/translate-all.c:1736
219 0x00005555558ce467 in tb_find (cf_mask=524288, tb_exit=1, last_tb=0x7fffd783e640 <code_gen_buffer+126084627>, cpu=0x1) at ./accel/tcg/cpu-exec.c:407
2210 0x00005555558ce467 in cpu_exec (cpu=cpu@entry=0x55555686a2f0) at ./accel/tcg/cpu-exec.c:728
2311 0x000055555588b0cf in tcg_cpu_exec (cpu=0x55555686a2f0) at ./cpus.c:1431
2412 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=0x55555686a2f0) at ./cpus.c:1735
2513 0x000055555588d223 in qemu_tcg_cpu_thread_fn (arg=arg@entry=0x55555686a2f0) at ./cpus.c:1709
2614 0x0000555555d2629a in qemu_thread_start (args=<optimized out>) at ./util/qemu-thread-posix.c:502
2715 0x00007ffff4db8a92 in start_thread () at /usr/lib/libpthread.
28
29This patch ensures that we don't hit the abort() in the second switch
30case in disas_neon_data_insn() as we will return from the first case.
31
32Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
33Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
34Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
35Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
36Tested-by: Alex Bennée <alex.bennee@linaro.org>
37Message-id: ad91b397f360b2fc7f4087e476f7df5b04d42ddb.1558021877.git.alistair.francis@wdc.com
38Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
39Upstream-Status: Backport [4.1.0]
40---
41 target/arm/translate.c | 4 ++--
42 1 file changed, 2 insertions(+), 2 deletions(-)
43
44diff --git a/target/arm/translate.c b/target/arm/translate.c
45index dd053c80d6..298c262825 100644
46--- a/target/arm/translate.c
47+++ b/target/arm/translate.c
48@@ -6598,13 +6598,13 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
49 tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
50 rn_ofs, rm_ofs, vec_size, vec_size,
51 (u ? uqadd_op : sqadd_op) + size);
52- break;
53+ return 0;
54
55 case NEON_3R_VQSUB:
56 tcg_gen_gvec_4(rd_ofs, offsetof(CPUARMState, vfp.qc),
57 rn_ofs, rm_ofs, vec_size, vec_size,
58 (u ? uqsub_op : sqsub_op) + size);
59- break;
60+ return 0;
61
62 case NEON_3R_VMUL: /* VMUL */
63 if (u) {
64--
652.21.0
66
diff --git a/meta/recipes-devtools/qemu/qemu/0014-linux-user-fix-to-handle-variably-sized-SIOCGSTAMP-w.patch b/meta/recipes-devtools/qemu/qemu/0014-linux-user-fix-to-handle-variably-sized-SIOCGSTAMP-w.patch
deleted file mode 100644
index 7cac8ef3d1..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0014-linux-user-fix-to-handle-variably-sized-SIOCGSTAMP-w.patch
+++ /dev/null
@@ -1,339 +0,0 @@
1From 8104018ba4c66e568d2583a3a0ee940851ee7471 Mon Sep 17 00:00:00 2001
2From: Daniel P. Berrangé <berrange@redhat.com>
3Date: Tue, 23 Jul 2019 17:50:00 +0200
4Subject: [PATCH] linux-user: fix to handle variably sized SIOCGSTAMP with new
5 kernels
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10The SIOCGSTAMP symbol was previously defined in the
11asm-generic/sockios.h header file. QEMU sees that header
12indirectly via sys/socket.h
13
14In linux kernel commit 0768e17073dc527ccd18ed5f96ce85f9985e9115
15the asm-generic/sockios.h header no longer defines SIOCGSTAMP.
16Instead it provides only SIOCGSTAMP_OLD, which only uses a
1732-bit time_t on 32-bit architectures.
18
19The linux/sockios.h header then defines SIOCGSTAMP using
20either SIOCGSTAMP_OLD or SIOCGSTAMP_NEW as appropriate. If
21SIOCGSTAMP_NEW is used, then the tv_sec field is 64-bit even
22on 32-bit architectures
23
24To cope with this we must now convert the old and new type from
25the target to the host one.
26
27Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
28Signed-off-by: Laurent Vivier <laurent@vivier.eu>
29Reviewed-by: Arnd Bergmann <arnd@arndb.de>
30Message-Id: <20190718130641.15294-1-laurent@vivier.eu>
31Signed-off-by: Laurent Vivier <laurent@vivier.eu>
32Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
33---
34Upstream-Status: Backport [upstream commit: 6d5d5dde9adb5acb32e6b8e3dfbf47fff0f308d2]
35
36 linux-user/ioctls.h | 21 +++++-
37 linux-user/syscall.c | 140 +++++++++++++++++++++++++++++--------
38 linux-user/syscall_defs.h | 30 +++++++-
39 linux-user/syscall_types.h | 6 --
40 4 files changed, 159 insertions(+), 38 deletions(-)
41
42diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
43index ae8951625f..e6a27ad9d6 100644
44--- a/linux-user/ioctls.h
45+++ b/linux-user/ioctls.h
46@@ -219,8 +219,25 @@
47 IOCTL(SIOCGRARP, IOC_R, MK_PTR(MK_STRUCT(STRUCT_arpreq)))
48 IOCTL(SIOCGIWNAME, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_char_ifreq)))
49 IOCTL(SIOCGPGRP, IOC_R, MK_PTR(TYPE_INT)) /* pid_t */
50- IOCTL(SIOCGSTAMP, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timeval)))
51- IOCTL(SIOCGSTAMPNS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timespec)))
52+
53+ /*
54+ * We can't use IOCTL_SPECIAL() because it will set
55+ * host_cmd to XXX_OLD and XXX_NEW and these macros
56+ * are not defined with kernel prior to 5.2.
57+ * We must set host_cmd to the same value as in target_cmd
58+ * otherwise the consistency check in syscall_init()
59+ * will trigger an error.
60+ * host_cmd is ignored by the do_ioctl_XXX() helpers.
61+ * FIXME: create a macro to define this kind of entry
62+ */
63+ { TARGET_SIOCGSTAMP_OLD, TARGET_SIOCGSTAMP_OLD,
64+ "SIOCGSTAMP_OLD", IOC_R, do_ioctl_SIOCGSTAMP },
65+ { TARGET_SIOCGSTAMPNS_OLD, TARGET_SIOCGSTAMPNS_OLD,
66+ "SIOCGSTAMPNS_OLD", IOC_R, do_ioctl_SIOCGSTAMPNS },
67+ { TARGET_SIOCGSTAMP_NEW, TARGET_SIOCGSTAMP_NEW,
68+ "SIOCGSTAMP_NEW", IOC_R, do_ioctl_SIOCGSTAMP },
69+ { TARGET_SIOCGSTAMPNS_NEW, TARGET_SIOCGSTAMPNS_NEW,
70+ "SIOCGSTAMPNS_NEW", IOC_R, do_ioctl_SIOCGSTAMPNS },
71
72 IOCTL(RNDGETENTCNT, IOC_R, MK_PTR(TYPE_INT))
73 IOCTL(RNDADDTOENTCNT, IOC_W, MK_PTR(TYPE_INT))
74diff --git a/linux-user/syscall.c b/linux-user/syscall.c
75index 96cd4bf86d..6df480e13d 100644
76--- a/linux-user/syscall.c
77+++ b/linux-user/syscall.c
78@@ -37,6 +37,7 @@
79 #include <sched.h>
80 #include <sys/timex.h>
81 #include <sys/socket.h>
82+#include <linux/sockios.h>
83 #include <sys/un.h>
84 #include <sys/uio.h>
85 #include <poll.h>
86@@ -1139,8 +1140,9 @@ static inline abi_long copy_from_user_timeval(struct timeval *tv,
87 {
88 struct target_timeval *target_tv;
89
90- if (!lock_user_struct(VERIFY_READ, target_tv, target_tv_addr, 1))
91+ if (!lock_user_struct(VERIFY_READ, target_tv, target_tv_addr, 1)) {
92 return -TARGET_EFAULT;
93+ }
94
95 __get_user(tv->tv_sec, &target_tv->tv_sec);
96 __get_user(tv->tv_usec, &target_tv->tv_usec);
97@@ -1155,8 +1157,26 @@ static inline abi_long copy_to_user_timeval(abi_ulong target_tv_addr,
98 {
99 struct target_timeval *target_tv;
100
101- if (!lock_user_struct(VERIFY_WRITE, target_tv, target_tv_addr, 0))
102+ if (!lock_user_struct(VERIFY_WRITE, target_tv, target_tv_addr, 0)) {
103+ return -TARGET_EFAULT;
104+ }
105+
106+ __put_user(tv->tv_sec, &target_tv->tv_sec);
107+ __put_user(tv->tv_usec, &target_tv->tv_usec);
108+
109+ unlock_user_struct(target_tv, target_tv_addr, 1);
110+
111+ return 0;
112+}
113+
114+static inline abi_long copy_to_user_timeval64(abi_ulong target_tv_addr,
115+ const struct timeval *tv)
116+{
117+ struct target__kernel_sock_timeval *target_tv;
118+
119+ if (!lock_user_struct(VERIFY_WRITE, target_tv, target_tv_addr, 0)) {
120 return -TARGET_EFAULT;
121+ }
122
123 __put_user(tv->tv_sec, &target_tv->tv_sec);
124 __put_user(tv->tv_usec, &target_tv->tv_usec);
125@@ -1166,6 +1186,48 @@ static inline abi_long copy_to_user_timeval(abi_ulong target_tv_addr,
126 return 0;
127 }
128
129+static inline abi_long target_to_host_timespec(struct timespec *host_ts,
130+ abi_ulong target_addr)
131+{
132+ struct target_timespec *target_ts;
133+
134+ if (!lock_user_struct(VERIFY_READ, target_ts, target_addr, 1)) {
135+ return -TARGET_EFAULT;
136+ }
137+ __get_user(host_ts->tv_sec, &target_ts->tv_sec);
138+ __get_user(host_ts->tv_nsec, &target_ts->tv_nsec);
139+ unlock_user_struct(target_ts, target_addr, 0);
140+ return 0;
141+}
142+
143+static inline abi_long host_to_target_timespec(abi_ulong target_addr,
144+ struct timespec *host_ts)
145+{
146+ struct target_timespec *target_ts;
147+
148+ if (!lock_user_struct(VERIFY_WRITE, target_ts, target_addr, 0)) {
149+ return -TARGET_EFAULT;
150+ }
151+ __put_user(host_ts->tv_sec, &target_ts->tv_sec);
152+ __put_user(host_ts->tv_nsec, &target_ts->tv_nsec);
153+ unlock_user_struct(target_ts, target_addr, 1);
154+ return 0;
155+}
156+
157+static inline abi_long host_to_target_timespec64(abi_ulong target_addr,
158+ struct timespec *host_ts)
159+{
160+ struct target__kernel_timespec *target_ts;
161+
162+ if (!lock_user_struct(VERIFY_WRITE, target_ts, target_addr, 0)) {
163+ return -TARGET_EFAULT;
164+ }
165+ __put_user(host_ts->tv_sec, &target_ts->tv_sec);
166+ __put_user(host_ts->tv_nsec, &target_ts->tv_nsec);
167+ unlock_user_struct(target_ts, target_addr, 1);
168+ return 0;
169+}
170+
171 static inline abi_long copy_from_user_timezone(struct timezone *tz,
172 abi_ulong target_tz_addr)
173 {
174@@ -4790,6 +4852,54 @@ static abi_long do_ioctl_kdsigaccept(const IOCTLEntry *ie, uint8_t *buf_temp,
175 return get_errno(safe_ioctl(fd, ie->host_cmd, sig));
176 }
177
178+static abi_long do_ioctl_SIOCGSTAMP(const IOCTLEntry *ie, uint8_t *buf_temp,
179+ int fd, int cmd, abi_long arg)
180+{
181+ struct timeval tv;
182+ abi_long ret;
183+
184+ ret = get_errno(safe_ioctl(fd, SIOCGSTAMP, &tv));
185+ if (is_error(ret)) {
186+ return ret;
187+ }
188+
189+ if (cmd == (int)TARGET_SIOCGSTAMP_OLD) {
190+ if (copy_to_user_timeval(arg, &tv)) {
191+ return -TARGET_EFAULT;
192+ }
193+ } else {
194+ if (copy_to_user_timeval64(arg, &tv)) {
195+ return -TARGET_EFAULT;
196+ }
197+ }
198+
199+ return ret;
200+}
201+
202+static abi_long do_ioctl_SIOCGSTAMPNS(const IOCTLEntry *ie, uint8_t *buf_temp,
203+ int fd, int cmd, abi_long arg)
204+{
205+ struct timespec ts;
206+ abi_long ret;
207+
208+ ret = get_errno(safe_ioctl(fd, SIOCGSTAMPNS, &ts));
209+ if (is_error(ret)) {
210+ return ret;
211+ }
212+
213+ if (cmd == (int)TARGET_SIOCGSTAMPNS_OLD) {
214+ if (host_to_target_timespec(arg, &ts)) {
215+ return -TARGET_EFAULT;
216+ }
217+ } else{
218+ if (host_to_target_timespec64(arg, &ts)) {
219+ return -TARGET_EFAULT;
220+ }
221+ }
222+
223+ return ret;
224+}
225+
226 #ifdef TIOCGPTPEER
227 static abi_long do_ioctl_tiocgptpeer(const IOCTLEntry *ie, uint8_t *buf_temp,
228 int fd, int cmd, abi_long arg)
229@@ -6160,32 +6270,6 @@ static inline abi_long target_ftruncate64(void *cpu_env, abi_long arg1,
230 }
231 #endif
232
233-static inline abi_long target_to_host_timespec(struct timespec *host_ts,
234- abi_ulong target_addr)
235-{
236- struct target_timespec *target_ts;
237-
238- if (!lock_user_struct(VERIFY_READ, target_ts, target_addr, 1))
239- return -TARGET_EFAULT;
240- __get_user(host_ts->tv_sec, &target_ts->tv_sec);
241- __get_user(host_ts->tv_nsec, &target_ts->tv_nsec);
242- unlock_user_struct(target_ts, target_addr, 0);
243- return 0;
244-}
245-
246-static inline abi_long host_to_target_timespec(abi_ulong target_addr,
247- struct timespec *host_ts)
248-{
249- struct target_timespec *target_ts;
250-
251- if (!lock_user_struct(VERIFY_WRITE, target_ts, target_addr, 0))
252- return -TARGET_EFAULT;
253- __put_user(host_ts->tv_sec, &target_ts->tv_sec);
254- __put_user(host_ts->tv_nsec, &target_ts->tv_nsec);
255- unlock_user_struct(target_ts, target_addr, 1);
256- return 0;
257-}
258-
259 static inline abi_long target_to_host_itimerspec(struct itimerspec *host_itspec,
260 abi_ulong target_addr)
261 {
262diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
263index 12c8407144..c918419306 100644
264--- a/linux-user/syscall_defs.h
265+++ b/linux-user/syscall_defs.h
266@@ -208,16 +208,34 @@ struct target_linger {
267 abi_int l_linger; /* How long to linger for */
268 };
269
270+#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
271+struct target_timeval {
272+ abi_long tv_sec;
273+ abi_int tv_usec;
274+};
275+#define target__kernel_sock_timeval target_timeval
276+#else
277 struct target_timeval {
278 abi_long tv_sec;
279 abi_long tv_usec;
280 };
281
282+struct target__kernel_sock_timeval {
283+ abi_llong tv_sec;
284+ abi_llong tv_usec;
285+};
286+#endif
287+
288 struct target_timespec {
289 abi_long tv_sec;
290 abi_long tv_nsec;
291 };
292
293+struct target__kernel_timespec {
294+ abi_llong tv_sec;
295+ abi_llong tv_nsec;
296+};
297+
298 struct target_timezone {
299 abi_int tz_minuteswest;
300 abi_int tz_dsttime;
301@@ -743,8 +761,16 @@ struct target_pollfd {
302 #define TARGET_SIOCATMARK 0x8905
303 #define TARGET_SIOCGPGRP 0x8904
304 #endif
305-#define TARGET_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
306-#define TARGET_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
307+#if defined(TARGET_SH4)
308+#define TARGET_SIOCGSTAMP_OLD TARGET_IOR('s', 100, struct target_timeval)
309+#define TARGET_SIOCGSTAMPNS_OLD TARGET_IOR('s', 101, struct target_timespec)
310+#else
311+#define TARGET_SIOCGSTAMP_OLD 0x8906
312+#define TARGET_SIOCGSTAMPNS_OLD 0x8907
313+#endif
314+
315+#define TARGET_SIOCGSTAMP_NEW TARGET_IOR(0x89, 0x06, abi_llong[2])
316+#define TARGET_SIOCGSTAMPNS_NEW TARGET_IOR(0x89, 0x07, abi_llong[2])
317
318 /* Networking ioctls */
319 #define TARGET_SIOCADDRT 0x890B /* add routing table entry */
320diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
321index b98a23b0f1..4e36983826 100644
322--- a/linux-user/syscall_types.h
323+++ b/linux-user/syscall_types.h
324@@ -14,12 +14,6 @@ STRUCT(serial_icounter_struct,
325 STRUCT(sockaddr,
326 TYPE_SHORT, MK_ARRAY(TYPE_CHAR, 14))
327
328-STRUCT(timeval,
329- MK_ARRAY(TYPE_LONG, 2))
330-
331-STRUCT(timespec,
332- MK_ARRAY(TYPE_LONG, 2))
333-
334 STRUCT(rtentry,
335 TYPE_ULONG, MK_STRUCT(STRUCT_sockaddr), MK_STRUCT(STRUCT_sockaddr), MK_STRUCT(STRUCT_sockaddr),
336 TYPE_SHORT, TYPE_SHORT, TYPE_ULONG, TYPE_PTRVOID, TYPE_SHORT, TYPE_PTRVOID,
337--
3382.21.0
339
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2019-12155.patch b/meta/recipes-devtools/qemu/qemu/CVE-2019-12155.patch
deleted file mode 100644
index c49a5e9a2a..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2019-12155.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From d52680fc932efb8a2f334cc6993e705ed1e31e99 Mon Sep 17 00:00:00 2001
2From: Prasad J Pandit <pjp@fedoraproject.org>
3Date: Thu, 25 Apr 2019 12:05:34 +0530
4Subject: [PATCH] qxl: check release info object
5
6When releasing spice resources in release_resource() routine,
7if release info object 'ext.info' is null, it leads to null
8pointer dereference. Add check to avoid it.
9
10Reported-by: Bugs SysSec <bugs-syssec@rub.de>
11Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
12Message-id: 20190425063534.32747-1-ppandit@redhat.com
13Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
14
15Upstream-Status: Backport
16CVE: CVE-2019-12155
17Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
18---
19 hw/display/qxl.c | 3 +++
20 1 file changed, 3 insertions(+)
21
22diff --git a/hw/display/qxl.c b/hw/display/qxl.c
23index c8ce5781e03..632923add23 100644
24--- a/hw/display/qxl.c
25+++ b/hw/display/qxl.c
26@@ -777,6 +777,9 @@ static void interface_release_resource(QXLInstance *sin,
27 QXLReleaseRing *ring;
28 uint64_t *item, id;
29
30+ if (!ext.info) {
31+ return;
32+ }
33 if (ext.group_id == MEMSLOT_GROUP_HOST) {
34 /* host group -> vga mode update request */
35 QXLCommandExt *cmdext = (void *)(intptr_t)(ext.info->id);
diff --git a/meta/recipes-devtools/qemu/qemu_4.0.0.bb b/meta/recipes-devtools/qemu/qemu_4.1.0.bb
index 76776098d0..76776098d0 100644
--- a/meta/recipes-devtools/qemu/qemu_4.0.0.bb
+++ b/meta/recipes-devtools/qemu/qemu_4.1.0.bb