[Qemu-devel] [PATCH] linux-user: fix build with 5.2-rc2 kernel headers

Christian Borntraeger posted 1 patch 4 years, 10 months ago
Test s390x passed
Test checkpatch passed
Test asan passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190604071915.288045-1-borntraeger@de.ibm.com
Maintainers: Riku Voipio <riku.voipio@iki.fi>, Laurent Vivier <laurent@vivier.eu>
linux-user/syscall.c | 1 +
1 file changed, 1 insertion(+)
[Qemu-devel] [PATCH] linux-user: fix build with 5.2-rc2 kernel headers
Posted by Christian Borntraeger 4 years, 10 months ago
Since kernel commit 0768e17073dc527ccd ("net: socket: implement 64-bit
timestamps") the linux kernel headers (those installed on the build
system, not those that are synced to QEMU) will make qemu-user fail to
build:

/root/rpmbuild/BUILD/qemu-4.0.50/linux-user/ioctls.h:222:9: error: 'SIOCGSTAMP' undeclared here (not in a function); did you mean 'SIOCSRARP'?
  222 |   IOCTL(SIOCGSTAMP, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timeval)))
      |         ^~~~~~~~~~

Let us fix this by including  "linux/sockios.h" instead of relying on
"sys/socket.h" providing those defines via an include chain.

Cc: Riku Voipio <riku.voipio@iki.fi>
Cc: Laurent Vivier <laurent@vivier.eu>
Cc: Arnd Bergmann <arnd@arndb.de>
Reported-by: Gerhard Stenzel <gerhard.stenzel@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 linux-user/syscall.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index efa3ec2837..7332be9b06 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -34,6 +34,7 @@
 #include <sys/resource.h>
 #include <sys/swap.h>
 #include <linux/capability.h>
+#include <linux/sockios.h>
 #include <sched.h>
 #include <sys/timex.h>
 #include <sys/socket.h>
-- 
2.21.0


Re: [Qemu-devel] [PATCH] linux-user: fix build with 5.2-rc2 kernel headers
Posted by Laurent Vivier 4 years, 10 months ago
Le 04/06/2019 à 09:19, Christian Borntraeger a écrit :
> Since kernel commit 0768e17073dc527ccd ("net: socket: implement 64-bit
> timestamps") the linux kernel headers (those installed on the build
> system, not those that are synced to QEMU) will make qemu-user fail to
> build:
> 
> /root/rpmbuild/BUILD/qemu-4.0.50/linux-user/ioctls.h:222:9: error: 'SIOCGSTAMP' undeclared here (not in a function); did you mean 'SIOCSRARP'?
>   222 |   IOCTL(SIOCGSTAMP, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timeval)))
>       |         ^~~~~~~~~~
> 
> Let us fix this by including  "linux/sockios.h" instead of relying on
> "sys/socket.h" providing those defines via an include chain.

I'm not sure it is as simple as this:
the value of SIOCGSTAMP depends on the size of struct timeval, and we
should use SIOCGSTAMP_OLD and SIOCGSTAMP_NEW to have the host and the
guest parts in sync.

Thanks,
Laurent
> 
> Cc: Riku Voipio <riku.voipio@iki.fi>
> Cc: Laurent Vivier <laurent@vivier.eu>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Reported-by: Gerhard Stenzel <gerhard.stenzel@de.ibm.com>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  linux-user/syscall.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index efa3ec2837..7332be9b06 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -34,6 +34,7 @@
>  #include <sys/resource.h>
>  #include <sys/swap.h>
>  #include <linux/capability.h>
> +#include <linux/sockios.h>
>  #include <sched.h>
>  #include <sys/timex.h>
>  #include <sys/socket.h>
>