public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Radostin Stoyanov <rstoyanov@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/criu] rawhide: Update to 4.2.1
Date: Tue, 21 Jul 2026 08:51:12 GMT [thread overview]
Message-ID: <178462387257.1.11362657073547011348.rpms-criu-e38e664a70aa@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/criu
Branch : rawhide
Commit : e38e664a70aa03725aaab4fe3f8219135a287607
Author : Radostin Stoyanov <rstoyanov@fedoraproject.org>
Date : 2026-07-21T09:48:45+01:00
Stats : +8/-588 in 10 file(s)
URL : https://src.fedoraproject.org/rpms/criu/c/e38e664a70aa03725aaab4fe3f8219135a287607?branch=rawhide
Log:
Update to 4.2.1
Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
---
diff --git a/.gitignore b/.gitignore
index e5c1b1b..fab44b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,3 +60,4 @@
/criu-4.1.tar.gz
/criu-4.1.1.tar.gz
/criu-4.2.tar.gz
+/criu-4.2.1.tar.gz
diff --git a/0001-rseq-use-kernel-rseq.h-when-glibc-detects-it.patch b/0001-rseq-use-kernel-rseq.h-when-glibc-detects-it.patch
deleted file mode 100644
index 0bed5af..0000000
--- a/0001-rseq-use-kernel-rseq.h-when-glibc-detects-it.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 95531dcc36c2453b9242e0de17b8fedb20ce48ca Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Tue, 3 Mar 2026 06:29:53 +0000
-Subject: [PATCH] rseq: use kernel rseq.h when glibc detects it
-
-Compilation fails with the latest glibc-devel in Fedora rawhide.
-Recent glibc conditionally includes the kernel's linux/rseq.h
-when __GLIBC_HAVE_KERNEL_RSEQ is defined, but CRIU's own copy
-of the rseq definitions does not account for this and conflicts
-with the kernel header which has additional information.
-
-Check if __GLIBC_HAVE_KERNEL_RSEQ is defined and if so include
-the kernel header directly using angle brackets (which bypasses
--iquote and finds the real kernel header instead of CRIU's
-copy). Otherwise fall back to CRIU's own definitions.
-
-Generated with Claude Code (https://claude.ai/code)
-
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- criu/include/linux/rseq.h | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/criu/include/linux/rseq.h b/criu/include/linux/rseq.h
-index 5ceefbf8e..d7f81e9a2 100644
---- a/criu/include/linux/rseq.h
-+++ b/criu/include/linux/rseq.h
-@@ -14,6 +14,16 @@
-
- #include "common/config.h"
-
-+/*
-+ * If glibc detected that the kernel rseq.h header exists, include
-+ * it directly using angle brackets (which bypasses -iquote and finds
-+ * the real kernel header). Otherwise fall back to our own copy of
-+ * the definitions.
-+ */
-+#ifdef __GLIBC_HAVE_KERNEL_RSEQ
-+#include <linux/rseq.h>
-+#else /* !__GLIBC_HAVE_KERNEL_RSEQ */
-+
- #ifdef CONFIG_HAS_NO_LIBC_RSEQ_DEFS
- /*
- * linux/rseq.h
-@@ -45,6 +55,8 @@ enum rseq_cs_flags {
- };
- #endif /* CONFIG_HAS_NO_LIBC_RSEQ_DEFS */
-
-+#endif /* !__GLIBC_HAVE_KERNEL_RSEQ */
-+
- /*
- * Let's use our own definition of struct rseq_cs because some distros
- * (for example Mariner GNU/Linux) declares this structure their-own way.
---
-2.51.1
-
diff --git a/0001-tty-fix-compiler-error.patch b/0001-tty-fix-compiler-error.patch
deleted file mode 100644
index 9b84c02..0000000
--- a/0001-tty-fix-compiler-error.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 90300748effc1cf0fe56e35d3d1cc2ddfedab246 Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Wed, 26 Nov 2025 13:21:07 +0000
-Subject: [PATCH] tty: fix compiler error
-
-At least on tests running on Fedora rawhide following error could be
-seen:
-
-```
- criu/tty.c: In function 'pts_fd_get_index':
- criu/tty.c:262:21: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
- 262 | char *pos = strrchr(link->name, '/');
- |
-```
-
-This fixes it.
-
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- criu/tty.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/criu/tty.c b/criu/tty.c
-index ae23094b7b..9a4520d535 100644
---- a/criu/tty.c
-+++ b/criu/tty.c
-@@ -259,7 +259,7 @@ static int pts_fd_get_index(int fd, const struct fd_parms *p)
- {
- int index;
- const struct fd_link *link = p->link;
-- char *pos = strrchr(link->name, '/');
-+ const char *pos = strrchr(link->name, '/');
-
- if (!pos || pos == (link->name + link->len - 1)) {
- pr_err("Unexpected format on path %s\n", link->name + 1);
diff --git a/0002-net-Route-veth-restore-through-usernsd-for-userns-mode.patch b/0002-net-Route-veth-restore-through-usernsd-for-userns-mode.patch
deleted file mode 100644
index cbedd55..0000000
--- a/0002-net-Route-veth-restore-through-usernsd-for-userns-mode.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 7ad6bb97b4e3951fc79cbda51b05e649aea2854a Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Tue, 21 Apr 2026 09:04:51 +0000
-Subject: [PATCH] net: Route veth restore through usernsd for userns mode
-
-Starting with Linux kernel commit 7b735ef81286 ("rtnetlink: add
-missing netlink_ns_capable() check for peer netns"), creating a
-veth pair with a peer in a different network namespace requires
-CAP_NET_ADMIN in the peer namespace as well:
-
- rtnetlink: add missing netlink_ns_capable() check for peer netns
-
- rtnl_newlink() lacks a CAP_NET_ADMIN capability check on the peer
- network namespace when creating paired devices (veth, vxcan,
- netkit). This allows an unprivileged user with a user namespace
- to create interfaces in arbitrary network namespaces, including
- init_net.
-
- Add a netlink_ns_capable() check for CAP_NET_ADMIN in the peer
- namespace before allowing device creation to proceed.
-
-Link: https://github.com/torvalds/linux/commit/7b735ef81286007794a227ce2539419479c02a5f
-
-When CRIU restores a veth in user namespace mode, it sends the
-RTM_NEWLINK request from a netlink socket inside the child user
-namespace. The veth peer is placed into the root network namespace
-via IFLA_NET_NS_FD, but the child user namespace does not have
-CAP_NET_ADMIN in the root namespace, so the new kernel check
-rejects the request with EPERM.
-
-Fix this by routing the veth creation through usernsd when the
-peer lives in an external (host) namespace specified via the
---external veth[name] restore option. usernsd runs with real
-root privileges in the init user namespace, so it passes the
-capability check in both namespaces.
-
-The usernsd path is only used for external veth mappings, not for
-child-to-child namespace veths (has_peer_nsid), because in that
-case both namespaces share the same user namespace and already
-have CAP_NET_ADMIN in each other.
-
-The approach mirrors restore_one_macvlan(), which already solves
-the same CAP_NET_ADMIN-in-both-namespaces problem for macvlan
-devices. A new veth_link_info_userns() builds the RTM_NEWLINK
-request without IFLA_NET_NS_FD for the peer -- since usernsd
-sends the request from the root network namespace, the peer
-naturally stays there. userns_restore_one_link() then adds a
-top-level IFLA_NET_NS_FD to move the main device into the child
-namespace.
-
-Assisted-by: Claude Code (claude-opus-4-6):claude-opus-4-6@default
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- criu/net.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 104 insertions(+)
-
-diff --git a/criu/net.c b/criu/net.c
-index e5775a3287..e1dc5973fd 100644
---- a/criu/net.c
-+++ b/criu/net.c
-@@ -1653,6 +1653,94 @@ static int restore_one_macvlan(struct ns_id *ns, struct net_link *link, int nlsk
- return ret;
- }
-
-+/*
-+ * Simplified veth_link_info for the usernsd path: builds the veth peer
-+ * info without adding IFLA_NET_NS_FD for the peer, since the netlink
-+ * request will be sent from usernsd's namespace (the root/peer namespace)
-+ * and the peer should remain there.
-+ */
-+static int veth_link_info_userns(struct ns_id *ns, struct net_link *link, struct newlink_req *req)
-+{
-+ NetDeviceEntry *nde = link->nde;
-+ struct rtattr *veth_data, *peer_data;
-+ struct ifinfomsg ifm;
-+ char key[100], *val;
-+
-+ addattr_l(&req->h, sizeof(*req), IFLA_INFO_KIND, "veth", 4);
-+
-+ veth_data = NLMSG_TAIL(&req->h);
-+ addattr_l(&req->h, sizeof(*req), IFLA_INFO_DATA, NULL, 0);
-+ peer_data = NLMSG_TAIL(&req->h);
-+ memset(&ifm, 0, sizeof(ifm));
-+
-+ if (nde->has_peer_nsid)
-+ ifm.ifi_index = nde->peer_ifindex;
-+ addattr_l(&req->h, sizeof(*req), VETH_INFO_PEER, &ifm, sizeof(ifm));
-+
-+ /* Set peer name from external mapping if available */
-+ snprintf(key, sizeof(key), "veth[%s]", nde->name);
-+ val = external_lookup_by_key(key);
-+ if (!IS_ERR_OR_NULL(val)) {
-+ char *aux = strchrnul(val, '@');
-+
-+ addattr_l(&req->h, sizeof(*req), IFLA_IFNAME, val, aux - val);
-+ }
-+
-+ /*
-+ * No IFLA_NET_NS_FD for the peer -- the request is sent from
-+ * usernsd's namespace (the root network namespace) and the
-+ * peer stays there. userns_restore_one_link() adds a top-level
-+ * IFLA_NET_NS_FD to move the main device into the child netns.
-+ */
-+
-+ peer_data->rta_len = (char *)NLMSG_TAIL(&req->h) - (char *)peer_data;
-+ veth_data->rta_len = (char *)NLMSG_TAIL(&req->h) - (char *)veth_data;
-+
-+ link->created = true;
-+
-+ return 0;
-+}
-+
-+/*
-+ * When running in user namespaces with a cross-namespace veth peer,
-+ * CAP_NET_ADMIN is required in both namespaces for veth creation
-+ * (kernel >= 7.0, commit 7b735ef81286). Route the request through
-+ * usernsd which runs with real root privileges, similar to
-+ * restore_one_macvlan().
-+ *
-+ * The netlink request is sent from usernsd's namespace (the root
-+ * network namespace), so the veth peer stays there. The main device
-+ * is moved to the child namespace via a top-level IFLA_NET_NS_FD
-+ * added by userns_restore_one_link().
-+ */
-+static int restore_one_veth_userns(struct ns_id *ns, struct net_link *link)
-+{
-+ struct newlink_req req;
-+ int my_netns, ret;
-+
-+ my_netns = open_proc(PROC_SELF, "ns/net");
-+ if (my_netns < 0)
-+ return -1;
-+
-+ if (populate_newlink_req(ns, &req, RTM_NEWLINK, link,
-+ veth_link_info_userns, NULL) < 0) {
-+ close(my_netns);
-+ return -1;
-+ }
-+
-+ pr_info("Restoring netdev %s idx %d via usernsd\n",
-+ link->nde->name, link->nde->ifindex);
-+
-+ ret = userns_call(userns_restore_one_link, 0,
-+ &req, sizeof(req), my_netns);
-+ if (ret < 0)
-+ pr_err("couldn't restore veth interface %s via usernsd\n",
-+ link->nde->name);
-+
-+ close(my_netns);
-+ return ret;
-+}
-+
- static int sit_link_info(struct ns_id *ns, struct net_link *link, struct newlink_req *req)
- {
- NetDeviceEntry *nde = link->nde;
-@@ -1762,6 +1850,22 @@ static int __restore_link(struct ns_id *ns, struct net_link *link, int nlsk)
- if (!IS_ERR_OR_NULL(val))
- return move_veth(val, ns, link, nlsk);
-
-+ /*
-+ * Creating a veth with a cross-namespace peer requires
-+ * CAP_NET_ADMIN in both namespaces (kernel >= 7.0).
-+ * In user namespace mode, route through usernsd which
-+ * has real root when the peer lives in an external
-+ * (host) namespace specified via --external veth[name].
-+ */
-+ if (root_ns_mask & CLONE_NEWUSER) {
-+ char vkey[100];
-+
-+ snprintf(vkey, sizeof(vkey), "veth[%s]", nde->name);
-+ val = external_lookup_by_key(vkey);
-+ if (!IS_ERR_OR_NULL(val))
-+ return restore_one_veth_userns(ns, link);
-+ }
-+
- return restore_one_link(ns, link, nlsk, veth_link_info, NULL);
- case ND_TYPE__TUN:
- return restore_one_tun(ns, link, nlsk);
diff --git a/0003-zdtm-Fix-rseq01-test-for-kernel-7.0-rseq-changes.patch b/0003-zdtm-Fix-rseq01-test-for-kernel-7.0-rseq-changes.patch
deleted file mode 100644
index e0ead93..0000000
--- a/0003-zdtm-Fix-rseq01-test-for-kernel-7.0-rseq-changes.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 14574afd322113630b897f5f7d08a292fb06ce5a Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Tue, 21 Apr 2026 09:30:17 +0000
-Subject: [PATCH] zdtm: Fix rseq01 test for kernel 7.0 rseq changes
-
-Starting with Linux 7.0, the rseq feature size has grown to 33 bytes
-and AT_RSEQ_ALIGN has increased to 64. This causes sizeof(struct rseq)
-from the uapi header to be 64 (33 bytes padded to aligned(32)), while
-the actual registration size used by glibc (__rseq_size) is 33.
-
-The rseq01 test was using sizeof(struct rseq) as the registration
-size and a test-local __rseq_abi variable (with only 32-byte
-alignment from the uapi header) as the rseq area. Both are
-wrong on kernel 7.0:
-
- - The kernel now checks alignment against __alignof__(struct rseq)
- which is 64 internally; the 32-byte-aligned test variable may
- not satisfy this.
-
- - sizeof(struct rseq) = 64 does not match the feature size of 33
- that glibc registered with, so re-registration with a different
- size fails.
-
-Fix by:
-
- - Using __rseq_size (the feature size reported by glibc) as the
- registration size instead of sizeof(struct rseq).
-
- - Using the glibc-provided rseq area (at thread_pointer() +
- __rseq_offset) which is allocated with proper AT_RSEQ_ALIGN
- alignment, instead of a test-local variable.
-
-Both fall back to the previous behavior when glibc rseq support
-is not available.
-
-This mirrors the glibc fix:
-
- https://sourceware.org/cgit/glibc/commit/?id=67f303b47dc584f204e3f2441b9832082415eebc
-
-Assisted-by: Claude Code (claude-opus-4-6):claude-opus-4-6@default
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- test/zdtm/transition/rseq01.c | 59 +++++++++++++++++++++++++++++------
- 1 file changed, 50 insertions(+), 9 deletions(-)
-
-diff --git a/test/zdtm/transition/rseq01.c b/test/zdtm/transition/rseq01.c
-index 08a7a8e1a6..9c5925bc45 100644
---- a/test/zdtm/transition/rseq01.c
-+++ b/test/zdtm/transition/rseq01.c
-@@ -20,9 +20,19 @@
- #endif
- #endif
-
-+/*
-+ * HAVE_GLIBC_RSEQ is set when the C library provides rseq support
-+ * (__rseq_size, __rseq_offset). glibc >= 2.35 defines RSEQ_SIG in
-+ * <sys/rseq.h>; musl does not, so the test falls back to its own
-+ * definitions below.
-+ */
-+#if defined(RSEQ_SIG)
-+#define HAVE_GLIBC_RSEQ 1
-+#endif
-+
- #if defined(__x86_64__)
-
--#if defined(__x86_64__) && defined(RSEQ_SIG)
-+#ifdef HAVE_GLIBC_RSEQ
- static inline void *thread_pointer(void)
- {
- void *result;
-@@ -38,11 +48,11 @@ static inline void unregister_old_rseq(void)
- size = 32;
- syscall(__NR_rseq, (void *)((char *)thread_pointer() + __rseq_offset), size, 1, RSEQ_SIG);
- }
--#else
-+#else /* !HAVE_GLIBC_RSEQ */
- static inline void unregister_old_rseq(void)
- {
- }
--#endif
-+#endif /* HAVE_GLIBC_RSEQ */
-
- const char *test_doc = "rseq() transition test";
- const char *test_author = "Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>";
-@@ -97,11 +107,27 @@ static int sys_rseq(volatile struct rseq *rseq_abi, uint32_t rseq_len, int flags
- return syscall(__NR_rseq, rseq_abi, rseq_len, flags, sig);
- }
-
-+/*
-+ * Return the rseq registration size. Starting with Linux 7.0,
-+ * AT_RSEQ_ALIGN is 64 but the feature size is 33, so sizeof(struct rseq)
-+ * (padded to alignment) no longer matches the registration size the kernel
-+ * expects. Use __rseq_size when available, clamped to a minimum of 32
-+ * for older kernels (mirroring glibc's rseq-internal.h).
-+ */
-+static uint32_t rseq_reg_size(void)
-+{
-+#ifdef HAVE_GLIBC_RSEQ
-+ if (__rseq_size)
-+ return (__rseq_size < 32) ? 32 : __rseq_size;
-+#endif
-+ return sizeof(struct rseq);
-+}
-+
- static void register_thread(void)
- {
- int rc;
- unregister_old_rseq();
-- rc = sys_rseq(rseq_ptr, sizeof(struct rseq), 0, RSEQ_SIG);
-+ rc = sys_rseq(rseq_ptr, rseq_reg_size(), 0, RSEQ_SIG);
- if (rc) {
- fail("Failed to register rseq");
- exit(1);
-@@ -111,7 +137,7 @@ static void register_thread(void)
- static void check_thread(void)
- {
- int rc;
-- rc = sys_rseq(rseq_ptr, sizeof(struct rseq), 0, RSEQ_SIG);
-+ rc = sys_rseq(rseq_ptr, rseq_reg_size(), 0, RSEQ_SIG);
- if (!(rc && errno == EBUSY)) {
- fail("Failed to check rseq %d", rc);
- exit(1);
-@@ -206,12 +232,27 @@ static intptr_t *cpu_data;
- bool ignore_abort = true;
- int thread_ret;
-
-+static volatile struct rseq *rseq_area(void)
-+{
-+#ifdef HAVE_GLIBC_RSEQ
-+ /*
-+ * Use the glibc-provided rseq area which is allocated with the
-+ * correct alignment (AT_RSEQ_ALIGN, 64 on kernel >= 7.0).
-+ * The test-local __rseq_abi only has the uapi header alignment
-+ * (32 bytes) which may not satisfy the kernel's requirement.
-+ */
-+ if (__rseq_size)
-+ return (volatile struct rseq *)((char *)thread_pointer() + __rseq_offset);
-+#endif
-+ return &__rseq_abi;
-+}
-+
- void *thread_routine(void *args)
- {
- int cpu;
-
-- rseq_ptr = &__rseq_abi;
-- memset((void *)rseq_ptr, 0, sizeof(struct rseq));
-+ rseq_ptr = rseq_area();
-+ memset((void *)rseq_ptr, 0, rseq_reg_size());
- register_thread();
- task_waiter_complete(&waiter, 1);
- task_waiter_wait4(&waiter, 2);
-@@ -235,8 +276,8 @@ int main(int argc, char *argv[])
- long nr_cpus;
- pthread_t thread;
-
-- rseq_ptr = &__rseq_abi;
-- memset((void *)rseq_ptr, 0, sizeof(struct rseq));
-+ rseq_ptr = rseq_area();
-+ memset((void *)rseq_ptr, 0, rseq_reg_size());
-
- test_init(argc, argv);
- nr_cpus = sysconf(_SC_NPROCESSORS_ONLN);
diff --git a/0004-sockets-Treat-UDPLITE-as-optional-in-collect_err.patch b/0004-sockets-Treat-UDPLITE-as-optional-in-collect_err.patch
deleted file mode 100644
index 1cd8f12..0000000
--- a/0004-sockets-Treat-UDPLITE-as-optional-in-collect_err.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 1cf8d3b21c64f0ef3310301019136433fc9f6392 Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Mon, 20 Apr 2026 19:19:42 +0000
-Subject: [PATCH] sockets: Treat UDPLITE as optional in collect_err()
-
-Kernel 7.1 removed IPPROTO_UDPLITE support. When the UDPLITE diag
-module is absent, the netlink request returns -ENOENT, which CRIU
-was treating as a fatal error causing the entire dump to fail.
-
-Apply the same treatment as IPPROTO_RAW: return success from the
-error callback so the dump can proceed. If a UDPLITE socket is
-actually encountered, it will fail at lookup time with a clear
-error rather than failing the entire dump preemptively.
-
-Fixes: https://github.com/checkpoint-restore/criu/issues/3002
-
-Assisted-by: Claude Code (claude-opus-4-6):claude-opus-4-6@default
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- criu/sockets.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/criu/sockets.c b/criu/sockets.c
-index e4adae03cd..7778b46881 100644
---- a/criu/sockets.c
-+++ b/criu/sockets.c
-@@ -827,16 +827,20 @@ static int collect_err(int err, struct ns_id *ns, void *arg)
- if (err == -ENOENT) {
- pr_debug("%s: %d\n", msg, err);
- /*
-- * Unlike other modules RAW sockets are
-- * always optional and not commonly used.
-+ * Unlike other modules RAW and UDPLITE sockets
-+ * are always optional and not commonly used.
- * Currently we warn user about lack of
- * a particular module support in "check"
- * procedure. Thus don't fail on lack of
-- * RAW diags in a regular dump. If we meet
-- * a raw socket we will simply fail on dump
-+ * these diags in a regular dump. If we meet
-+ * such a socket we will simply fail on dump
- * procedure because it won't be resolved.
-+ *
-+ * Note: IPPROTO_UDPLITE support was removed
-+ * from the kernel starting with v7.1.
- */
-- if (gr->protocol == IPPROTO_RAW)
-+ if (gr->protocol == IPPROTO_RAW ||
-+ gr->protocol == IPPROTO_UDPLITE)
- return 0;
- return -ENOENT;
- }
diff --git a/0005-zdtm-Skip-socket_udplite-test-when-kernel-lacks-UDPLITE.patch b/0005-zdtm-Skip-socket_udplite-test-when-kernel-lacks-UDPLITE.patch
deleted file mode 100644
index 5d9d5d5..0000000
--- a/0005-zdtm-Skip-socket_udplite-test-when-kernel-lacks-UDPLITE.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 23905c26b86afdc01bcfa85ae0a3aab015fc81f1 Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Tue, 21 Apr 2026 07:58:00 +0000
-Subject: [PATCH] zdtm: Skip socket_udplite test when kernel lacks UDPLITE
-
-Kernel 7.1 removed IPPROTO_UDPLITE support. Add a checkskip
-script that probes for a UDPLITE socket and skips the test
-with EPROTONOSUPPORT instead of failing.
-
-Assisted-by: Claude Code (claude-opus-4-6):claude-opus-4-6@default
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- test/zdtm/static/socket_udplite.checkskip | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
- create mode 100755 test/zdtm/static/socket_udplite.checkskip
-
-diff --git a/test/zdtm/static/socket_udplite.checkskip b/test/zdtm/static/socket_udplite.checkskip
-new file mode 100755
-index 0000000000..a562550843
---- /dev/null
-+++ b/test/zdtm/static/socket_udplite.checkskip
-@@ -0,0 +1,15 @@
-+#!/usr/bin/env python3
-+# IPPROTO_UDPLITE was removed in kernel 7.1, skip the test if the
-+# protocol is not available.
-+import socket
-+import errno
-+
-+try:
-+ socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDPLITE).close()
-+except OSError as e:
-+ if e.errno == errno.EPROTONOSUPPORT:
-+ print("UDPLITE is not supported by this kernel.")
-+ exit(1)
-+ raise
-+
-+exit(0)
diff --git a/3023.patch b/3023.patch
deleted file mode 100644
index 8b7c0bc..0000000
--- a/3023.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 51660aba34b41c08d892bda6528abe992a5687e7 Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Tue, 19 May 2026 17:11:35 +0000
-Subject: [PATCH] zdtm: unregister rseq before zeroing the rseq area
-
-Starting with Linux 7.1, the kernel enforces strict read-only field
-protection for the rseq V2 ABI. Userspace is no longer allowed to
-modify kernel-managed fields (cpu_id_start, cpu_id, node_id, mm_cid)
-while rseq is registered. Violations are detected on the next context
-switch and the offending process is killed with SIGSEGV.
-
-The rseq01 test was zeroing the entire glibc-registered rseq area
-with memset() before calling test_init(), which internally calls
-fork(). This corrupted the read-only fields while the glibc rseq
-registration was still active, causing the kernel to send SIGSEGV
-during the fork.
-
-Fix this by calling unregister_old_rseq() before the memset in both
-main() and thread_routine(), so the kernel is no longer monitoring
-those fields when they are zeroed. The subsequent register_thread()
-call re-registers rseq with the clean area.
-
-Link: https://github.com/torvalds/linux/commit/7f0023215262221ca08d56be2203e8a4770be033
-
-Assisted-by: Claude Code (https://claude.ai/code):claude-opus-4-6
-Signed-off-by: Adrian Reber <areber@redhat.com>
----
- test/zdtm/transition/rseq01.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/test/zdtm/transition/rseq01.c b/test/zdtm/transition/rseq01.c
-index 9c5925bc45..0d5485e162 100644
---- a/test/zdtm/transition/rseq01.c
-+++ b/test/zdtm/transition/rseq01.c
-@@ -252,6 +252,7 @@ void *thread_routine(void *args)
- int cpu;
-
- rseq_ptr = rseq_area();
-+ unregister_old_rseq();
- memset((void *)rseq_ptr, 0, rseq_reg_size());
- register_thread();
- task_waiter_complete(&waiter, 1);
-@@ -277,6 +278,7 @@ int main(int argc, char *argv[])
- pthread_t thread;
-
- rseq_ptr = rseq_area();
-+ unregister_old_rseq();
- memset((void *)rseq_ptr, 0, rseq_reg_size());
-
- test_init(argc, argv);
diff --git a/criu.spec b/criu.spec
index 897e63b..06102ba 100644
--- a/criu.spec
+++ b/criu.spec
@@ -12,19 +12,12 @@
%undefine _annotated_build
Name: criu
-Version: 4.2
-Release: 22%{?dist}
+Version: 4.2.1
+Release: 1%{?dist}
Summary: Tool for Checkpoint/Restore in User-space
License: GPL-2.0-only AND LGPL-2.1-only AND MIT
URL: http://criu.org/
Source0: https://github.com/checkpoint-restore/criu/archive/v%{version}/criu-%{version}.tar.gz
-Patch0: 0001-rseq-use-kernel-rseq.h-when-glibc-detects-it.patch
-Patch1: 0001-tty-fix-compiler-error.patch
-Patch2: 0002-net-Route-veth-restore-through-usernsd-for-userns-mode.patch
-Patch3: 0003-zdtm-Fix-rseq01-test-for-kernel-7.0-rseq-changes.patch
-Patch4: 0004-sockets-Treat-UDPLITE-as-optional-in-collect_err.patch
-Patch5: 0005-zdtm-Skip-socket_udplite-test-when-kernel-lacks-UDPLITE.patch
-Patch6: https://patch-diff.githubusercontent.com/raw/checkpoint-restore/criu/pull/3023.patch
# Add protobuf-c as a dependency.
# We use this patch because the protobuf-c package name
@@ -121,13 +114,6 @@ This script can help to workaround the so called "PID mismatch" problem.
%prep
%setup -q
-%patch -P 0 -p1
-%patch -P 1 -p1
-%patch -P 2 -p1
-%patch -P 3 -p1
-%patch -P 4 -p1
-%patch -P 5 -p1
-%patch -P 6 -p1
%patch -P 99 -p1
%build
@@ -216,6 +202,10 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libcriu.a
%tmpfiles_create %{name}.conf
%changelog
+* Tue Jul 21 2026 Radostin Stoyanov <rstoyanov@fedoraproject.org> - 4.2.1-1
+- Update to 4.2.1
+- Drop patches merged upstream
+
* Wed Jul 15 2026 Fedora Release Engineering <releng@fedoraproject.org> - 4.2-22
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
diff --git a/sources b/sources
index 8f69f50..0744768 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (criu-4.2.tar.gz) = f7e0ac17d46dd560bb2439f617a0a3b3933eb86f4b8b9b16852d300e4ffc6a4851d72be9342dfd40792a53fca8b65d26fde4e1b1f02bcd04923a8b6f0e5c8a62
+SHA512 (criu-4.2.1.tar.gz) = 73a4f5d9e6af2d07c0b234201cce09a827dcb1dcb1b1095cb3944a0a37dd34f4d5ef3ce34e12568c38dff2b517809e64aff55be605e934d2ab39daa659ca9a97
reply other threads:[~2026-07-21 8:51 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178462387257.1.11362657073547011348.rpms-criu-e38e664a70aa@fedoraproject.org \
--to=rstoyanov@fedoraproject.org \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox