Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package criu for openSUSE:Factory checked in 
at 2022-09-14 13:45:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/criu (Old)
 and      /work/SRC/openSUSE:Factory/.criu.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "criu"

Wed Sep 14 13:45:11 2022 rev:57 rq:1003458 version:3.17.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/criu/criu.changes        2022-08-11 
18:32:50.454241744 +0200
+++ /work/SRC/openSUSE:Factory/.criu.new.2083/criu.changes      2022-09-14 
13:45:25.061960048 +0200
@@ -1,0 +2,7 @@
+Wed Sep 14 07:20:38 UTC 2022 - Takashi Iwai <ti...@suse.com>
+
+- Fix build with glibc 2.36: backports of two upstream fixes
+  criu-fix-conflicting-headers.patch
+  mount-add-definition-for-FSOPEN_CLOEXEC.patch
+
+-------------------------------------------------------------------

New:
----
  criu-fix-conflicting-headers.patch
  mount-add-definition-for-FSOPEN_CLOEXEC.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ criu.spec ++++++
--- /var/tmp/diff_new_pack.xjQ4l2/_old  2022-09-14 13:45:25.609961427 +0200
+++ /var/tmp/diff_new_pack.xjQ4l2/_new  2022-09-14 13:45:25.617961448 +0200
@@ -45,6 +45,9 @@
 Patch2:         0002-Fix-build-with-nftables-installed-in-different-direc.patch
 Patch3:         criu-amdgpu-plugin-fix.patch
 Patch4:         plugin-dir-path.patch
+# upstream fixes
+Patch5:         criu-fix-conflicting-headers.patch
+Patch6:         mount-add-definition-for-FSOPEN_CLOEXEC.patch
 BuildRequires:  libcap-devel
 %if %{with_amdgpu_plugin}
 BuildRequires:  libdrm-devel
@@ -125,6 +128,8 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
 # default off
 echo "BINFMT_MISC_VIRTUALIZED" > .config
 

++++++ criu-fix-conflicting-headers.patch ++++++
>From 4c86d6a7d54abb64fc5a15131f3351224e8c071b Mon Sep 17 00:00:00 2001
From: Radostin Stoyanov <rstoya...@fedoraproject.org>
Date: Sun, 31 Jul 2022 16:07:30 +0000
Subject: [PATCH] criu: fix conflicting headers

There are several changes in glibc 2.36 that make sys/mount.h header
incompatible with kernel headers:

https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E

This patch removes conflicting includes for `<linux/mount.h>` and
updates the content of `criu/include/linux/mount.h` to match
`/usr/include/sys/mount.h`. In addition, inline definitions sys_*()
functions have been moved from "linux/mount.h" to "syscall.h" to
avoid conflicts with `uapi/compel/plugins/std/syscall.h` and
`<unistd.h>`. The include for `<linux/aio_abi.h>` has been replaced
with local include to avoid conflicts with `<sys/mount.h>`.

Fixes: #1949

Signed-off-by: Radostin Stoyanov <rstoya...@fedoraproject.org>
---
 Makefile.config              |    2 -
 criu/cgroup.c                |    1 
 criu/cr-check.c              |    2 -
 criu/cr-restore.c            |    3 +-
 criu/include/aio.h           |    2 -
 criu/include/linux/aio_abi.h |   14 ++++++++++++
 criu/include/linux/mount.h   |   48 ++++++++++++++++++++++---------------------
 criu/include/syscall.h       |   17 +++++++++++++++
 criu/pie/parasite.c          |    2 -
 criu/util.c                  |    1 
 scripts/feature-tests.mak    |   13 -----------
 11 files changed, 64 insertions(+), 41 deletions(-)
 create mode 100644 criu/include/linux/aio_abi.h
 create mode 100644 criu/include/syscall.h

--- a/Makefile.config
+++ b/Makefile.config
@@ -81,7 +81,7 @@ export DEFINES += $(FEATURE_DEFINES)
 export CFLAGS += $(FEATURE_DEFINES) $(FEATURE_CFLAGS)
 
 FEATURES_LIST  := TCP_REPAIR STRLCPY STRLCAT PTRACE_PEEKSIGINFO \
-       SETPROCTITLE_INIT MEMFD TCP_REPAIR_WINDOW FSCONFIG MEMFD_CREATE OPENAT2
+       SETPROCTITLE_INIT MEMFD TCP_REPAIR_WINDOW MEMFD_CREATE OPENAT2
 
 # $1 - config name
 define gen-feature-test
--- a/criu/cgroup.c
+++ b/criu/cgroup.c
@@ -27,6 +27,7 @@
 #include "images/cgroup.pb-c.h"
 #include "kerndat.h"
 #include "linux/mount.h"
+#include "syscall.h"
 
 /*
  * This structure describes set of controller groups
--- a/criu/cr-check.c
+++ b/criu/cr-check.c
@@ -21,7 +21,6 @@
 #include <sys/prctl.h>
 #include <sched.h>
 #include <sys/mount.h>
-#include <linux/aio_abi.h>
 
 #include "../soccr/soccr.h"
 
@@ -52,6 +51,7 @@
 #include "net.h"
 #include "restorer.h"
 #include "uffd.h"
+#include "linux/aio_abi.h"
 
 #include "images/inventory.pb-c.h"
 
--- a/criu/cr-restore.c
+++ b/criu/cr-restore.c
@@ -22,7 +22,6 @@
 #include <compel/ptrace.h>
 #include "common/compiler.h"
 
-#include "linux/mount.h"
 #include "linux/rseq.h"
 
 #include "clone-noasan.h"
@@ -86,6 +85,8 @@
 #include <compel/plugins/std/syscall-codes.h>
 #include "compel/include/asm/syscall.h"
 
+#include "linux/mount.h"
+
 #include "protobuf.h"
 #include "images/sa.pb-c.h"
 #include "images/timer.pb-c.h"
--- a/criu/include/aio.h
+++ b/criu/include/aio.h
@@ -1,7 +1,7 @@
 #ifndef __CR_AIO_H__
 #define __CR_AIO_H__
 
-#include <linux/aio_abi.h>
+#include "linux/aio_abi.h"
 #include "images/mm.pb-c.h"
 unsigned int aio_estimate_nr_reqs(unsigned int size);
 int dump_aio_ring(MmEntry *mme, struct vma_area *vma);
--- /dev/null
+++ b/criu/include/linux/aio_abi.h
@@ -0,0 +1,14 @@
+#ifndef __LINUX__AIO_ABI_H
+#define __LINUX__AIO_ABI_H
+
+typedef __kernel_ulong_t aio_context_t;
+
+/* read() from /dev/aio returns these structures. */
+struct io_event {
+       __u64 data; /* the data field from the iocb */
+       __u64 obj;  /* what iocb this event came from */
+       __s64 res;  /* result code for this event */
+       __s64 res2; /* secondary result */
+};
+
+#endif /* __LINUX__AIO_ABI_H */
--- a/criu/include/linux/mount.h
+++ b/criu/include/linux/mount.h
@@ -4,32 +4,34 @@
 #include "common/config.h"
 #include "compel/plugins/std/syscall-codes.h"
 
-#ifdef CONFIG_HAS_FSCONFIG
-#include <linux/mount.h>
-#else
+/* Copied from /usr/include/sys/mount.h */
+
+#ifndef FSCONFIG_CMD_CREATE
+/* The type of fsconfig call made.   */
 enum fsconfig_command {
-       FSCONFIG_SET_FLAG = 0,        /* Set parameter, supplying no value */
-       FSCONFIG_SET_STRING = 1,      /* Set parameter, supplying a string 
value */
-       FSCONFIG_SET_BINARY = 2,      /* Set parameter, supplying a binary blob 
value */
-       FSCONFIG_SET_PATH = 3,        /* Set parameter, supplying an object by 
path */
-       FSCONFIG_SET_PATH_EMPTY = 4,  /* Set parameter, supplying an object by 
(empty) path */
-       FSCONFIG_SET_FD = 5,          /* Set parameter, supplying an object by 
fd */
-       FSCONFIG_CMD_CREATE = 6,      /* Invoke superblock creation */
+       FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
+#define FSCONFIG_SET_FLAG FSCONFIG_SET_FLAG
+       FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
+#define FSCONFIG_SET_STRING FSCONFIG_SET_STRING
+       FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob 
value */
+#define FSCONFIG_SET_BINARY FSCONFIG_SET_BINARY
+       FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
+#define FSCONFIG_SET_PATH FSCONFIG_SET_PATH
+       FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by 
(empty) path */
+#define FSCONFIG_SET_PATH_EMPTY FSCONFIG_SET_PATH_EMPTY
+       FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
+#define FSCONFIG_SET_FD FSCONFIG_SET_FD
+       FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
+#define FSCONFIG_CMD_CREATE FSCONFIG_CMD_CREATE
        FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
+#define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE
 };
-#endif
+#endif // FSCONFIG_CMD_CREATE
 
-static inline int sys_fsopen(const char *fsname, unsigned int flags)
-{
-       return syscall(__NR_fsopen, fsname, flags);
-}
-static inline int sys_fsconfig(int fd, unsigned int cmd, const char *key, 
const char *value, int aux)
-{
-       return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
-}
-static inline int sys_fsmount(int fd, unsigned int flags, unsigned int 
attr_flags)
-{
-       return syscall(__NR_fsmount, fd, flags, attr_flags);
-}
+#ifndef MS_MGC_VAL
+/* Magic mount flag number. Has to be or-ed to the flag values.  */
+#define MS_MGC_VAL 0xc0ed0000 /* Magic flag number to indicate "new" flags */
+#define MS_MGC_MSK 0xffff0000 /* Magic flag number mask */
+#endif
 
 #endif
--- /dev/null
+++ b/criu/include/syscall.h
@@ -0,0 +1,17 @@
+#ifndef __CR_SYSCALL_H__
+#define __CR_SYSCALL_H__
+
+static inline int sys_fsopen(const char *fsname, unsigned int flags)
+{
+       return syscall(__NR_fsopen, fsname, flags);
+}
+static inline int sys_fsconfig(int fd, unsigned int cmd, const char *key, 
const char *value, int aux)
+{
+       return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
+}
+static inline int sys_fsmount(int fd, unsigned int flags, unsigned int 
attr_flags)
+{
+       return syscall(__NR_fsmount, fd, flags, attr_flags);
+}
+
+#endif /* __CR_SYSCALL_H__ */
\ No newline at end of file
--- a/criu/pie/parasite.c
+++ b/criu/pie/parasite.c
@@ -3,7 +3,6 @@
 #include <signal.h>
 #include <linux/limits.h>
 #include <linux/capability.h>
-#include <sys/mount.h>
 #include <stdarg.h>
 #include <sys/ioctl.h>
 #include <sys/uio.h>
@@ -14,6 +13,7 @@
 #include "int.h"
 #include "types.h"
 #include <compel/plugins/std/syscall.h>
+#include "linux/mount.h"
 #include "parasite.h"
 #include "fcntl.h"
 #include "prctl.h"
--- a/criu/util.c
+++ b/criu/util.c
@@ -40,6 +40,7 @@
 #include "mem.h"
 #include "namespaces.h"
 #include "criu-log.h"
+#include "syscall.h"
 
 #include "clone-noasan.h"
 #include "cr_options.h"
--- a/scripts/feature-tests.mak
+++ b/scripts/feature-tests.mak
@@ -137,19 +137,6 @@ ENTRY(main)
 END(main)
 endef
 
-define FEATURE_TEST_FSCONFIG
-
-#include <linux/mount.h>
-
-int main(void)
-{
-       if (FSCONFIG_CMD_CREATE > 0)
-               return 0;
-       return 0;
-}
-
-endef
-
 define FEATURE_TEST_NFTABLES_LIB_API_0
 
 #include <string.h>

++++++ mount-add-definition-for-FSOPEN_CLOEXEC.patch ++++++
>From 517c0947050e63aac72f63a3bf373d76264723b9 Mon Sep 17 00:00:00 2001
From: Radostin Stoyanov <rstoya...@fedoraproject.org>
Date: Wed, 24 Aug 2022 21:20:30 +0200
Subject: [PATCH] mount: add definition for FSOPEN_CLOEXEC

A recent change in glibc introduced `enum fsconfig_command` [1] and as a
result the compilation of criu fails with the following errors

In file included from criu/pie/util.c:3:
/usr/include/sys/mount.h:240:6: error: redeclaration of 'enum fsconfig_command'
  240 | enum fsconfig_command
      |      ^~~~~~~~~~~~~~~~
In file included from /usr/include/sys/mount.h:32:
criu/include/linux/mount.h:11:6: note: originally defined here
   11 | enum fsconfig_command {
      |      ^~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:242:3: error: redeclaration of enumerator 
'FSCONFIG_SET_FLAG'
  242 |   FSCONFIG_SET_FLAG       = 0,    /* Set parameter, supplying no value 
*/
      |   ^~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:12:9: note: previous definition of 
'FSCONFIG_SET_FLAG' with type 'enum fsconfig_command'
   12 |         FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
      |         ^~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:244:3: error: redeclaration of enumerator 
'FSCONFIG_SET_STRING'
  244 |   FSCONFIG_SET_STRING     = 1,    /* Set parameter, supplying a string 
value */
      |   ^~~~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:14:9: note: previous definition of 
'FSCONFIG_SET_STRING' with type 'enum fsconfig_command'
   14 |         FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string 
value */
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:246:3: error: redeclaration of enumerator 
'FSCONFIG_SET_BINARY'
  246 |   FSCONFIG_SET_BINARY     = 2,    /* Set parameter, supplying a binary 
blob value */
      |   ^~~~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:16:9: note: previous definition of 
'FSCONFIG_SET_BINARY' with type 'enum fsconfig_command'
   16 |         FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary 
blob value */
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:248:3: error: redeclaration of enumerator 
'FSCONFIG_SET_PATH'
  248 |   FSCONFIG_SET_PATH       = 3,    /* Set parameter, supplying an object 
by path */
      |   ^~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:18:9: note: previous definition of 
'FSCONFIG_SET_PATH' with type 'enum fsconfig_command'
   18 |         FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by 
path */
      |         ^~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:250:3: error: redeclaration of enumerator 
'FSCONFIG_SET_PATH_EMPTY'
  250 |   FSCONFIG_SET_PATH_EMPTY = 4,    /* Set parameter, supplying an object 
by (empty) path */
      |   ^~~~~~~~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:20:9: note: previous definition of 
'FSCONFIG_SET_PATH_EMPTY' with type 'enum fsconfig_command'
   20 |         FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an 
object by (empty) path */
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:252:3: error: redeclaration of enumerator 
'FSCONFIG_SET_FD'
  252 |   FSCONFIG_SET_FD         = 5,    /* Set parameter, supplying an object 
by fd */
      |   ^~~~~~~~~~~~~~~
criu/include/linux/mount.h:22:9: note: previous definition of 'FSCONFIG_SET_FD' 
with type 'enum fsconfig_command'
   22 |         FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by 
fd */
      |         ^~~~~~~~~~~~~~~
/usr/include/sys/mount.h:254:3: error: redeclaration of enumerator 
'FSCONFIG_CMD_CREATE'
  254 |   FSCONFIG_CMD_CREATE     = 6,    /* Invoke superblock creation */
      |   ^~~~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:24:9: note: previous definition of 
'FSCONFIG_CMD_CREATE' with type 'enum fsconfig_command'
   24 |         FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:256:3: error: redeclaration of enumerator 
'FSCONFIG_CMD_RECONFIGURE'
  256 |   FSCONFIG_CMD_RECONFIGURE = 7,   /* Invoke superblock reconfiguration 
*/
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
criu/include/linux/mount.h:26:9: note: previous definition of 
'FSCONFIG_CMD_RECONFIGURE' with type 'enum fsconfig_command'
   26 |         FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock 
reconfiguration */

This patch adds definition for FSOPEN_CLOEXEC to solve this problem. In 
particular,
sys/mount.h includes ifndef check for FSOPEN_CLOEXEC surrounding `enum 
fsconfig_command`.

[1] 
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=7eae6a91e9b1670330c9f15730082c91c0b1d570

Reported-by: Younes Manton (@ymanton)
Signed-off-by: Radostin Stoyanov <rstoya...@fedoraproject.org>
---
 criu/include/linux/mount.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/criu/include/linux/mount.h b/criu/include/linux/mount.h
index 0d55a588cb9a..fefafa89e14d 100644
--- a/criu/include/linux/mount.h
+++ b/criu/include/linux/mount.h
@@ -6,7 +6,7 @@
 
 /* Copied from /usr/include/sys/mount.h */
 
-#ifndef FSCONFIG_CMD_CREATE
+#ifndef FSOPEN_CLOEXEC
 /* The type of fsconfig call made.   */
 enum fsconfig_command {
        FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
@@ -26,7 +26,13 @@ enum fsconfig_command {
        FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
 #define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE
 };
-#endif // FSCONFIG_CMD_CREATE
+
+#endif // FSOPEN_CLOEXEC
+
+/* fsopen flags. With the redundant definition, we check if the kernel,
+ * glibc value and our value still match.
+ */
+#define FSOPEN_CLOEXEC 0x00000001
 
 #ifndef MS_MGC_VAL
 /* Magic mount flag number. Has to be or-ed to the flag values.  */
-- 
2.35.3

Reply via email to