* [PATCH] eudev: upgrade 3.2.15 -> 3.3.0
@ 2026-11-07 15:43 Alex Kiernan
2026-11-08 11:52 ` [OE-core] " Mathieu Dubois-Briand
0 siblings, 1 reply; 3+ messages in thread
From: Alex Kiernan @ 2026-11-07 15:43 UTC (permalink / raw)
To: openembedded-core; +Cc: Alex Kiernan
Release notes:
https://github.com/eudev-project/eudev/blob/v3.3.0/NEWS.md
Drop 0001-udevd-keep-a-copy-of-the-event-devnode.patch, fixed
differently upstream.
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
---
...evd-keep-a-copy-of-the-event-devnode.patch | 101 ------------------
.../udev/{eudev_3.2.15.bb => eudev_3.3.0.bb} | 9 +-
2 files changed, 5 insertions(+), 105 deletions(-)
delete mode 100644 meta/recipes-core/udev/eudev/0001-udevd-keep-a-copy-of-the-event-devnode.patch
rename meta/recipes-core/udev/{eudev_3.2.15.bb => eudev_3.3.0.bb} (90%)
diff --git a/meta/recipes-core/udev/eudev/0001-udevd-keep-a-copy-of-the-event-devnode.patch b/meta/recipes-core/udev/eudev/0001-udevd-keep-a-copy-of-the-event-devnode.patch
deleted file mode 100644
index 498bdda2bb50..000000000000
--- a/meta/recipes-core/udev/eudev/0001-udevd-keep-a-copy-of-the-event-devnode.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Sat, 17 Oct 2026 14:23:21 +0100
-Subject: [PATCH] udevd: keep a copy of the event devnode
-
-Commit 4b83740d95be added a devnode check to is_devpath_busy(), caching
-the pointer returned by udev_device_get_devnode() in struct event. That
-string belongs to the udev_device and can be freed while the event is
-still queued: dispatching an event to an idle worker calls
-udev_monitor_send_device(), whose udev_device_get_devtype() re-reads the
-uevent file for devices without DEVTYPE, and the DEVNAME line replaces
-(frees) the devnode string via udev_device_set_devnode().
-
-The next is_devpath_busy() then strcmp()s freed memory. Under musl,
-whose mallocng returns freed memory to the kernel, this segfaults the
-main daemon; elsewhere it silently compares stale data. valgrind
-(qemuarm64, musl) reports it on the first coldplug:
-
- Invalid read of size 1
- at strcmp
- by streq_ptr (util.c:97)
- by is_devpath_busy (udevd.c:578)
- by event_queue_start (udevd.c:602)
- Address 0x54eeaf0 is 0 bytes inside a block of size 10 free'd
- at free
- by udev_device_set_devnode (libudev-device.c:1750)
- by udev_device_read_uevent_file (libudev-device.c:706)
- by udev_device_get_devtype (libudev-device.c:248)
- by udev_monitor_send_device (libudev-monitor.c:822)
- by event_run (udevd.c:462)
- Block was alloc'd at
- at malloc
- by asprintf
- by udev_device_set_devnode (libudev-device.c:1752)
- by udev_device_new_from_nulstr (libudev-device.c:2151)
- by udev_monitor_receive_device (libudev-monitor.c:762)
-
-The systemd code this was ported from is not affected: sd_device seals
-devices received from netlink, so device_read_uevent_file() never
-re-reads them and the cached devname stays the DEVNAME the event arrived
-with for as long as the event is queued.
-
-Store a copy of the devnode in struct event, which keeps those
-semantics. Looking the devnode up from the device at comparison time
-would avoid the allocation, but would compare whatever a later uevent
-re-read left there rather than the event's own DEVNAME, which is what
-the check relies on for a remove and add queued for the same node.
-Stopping udev_device_get_devtype() re-reading the uevent file would
-remove the trigger instead, but changes public libudev behaviour.
-
-Fixes: 4b83740d95be ("udevd: make newer event also blocked by DEVPATH_OLD and by events for the same device node")
-Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
-AI-Generated: Claude Opus 5.5 (Claude Code)
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-
-Upstream-Status: Submitted [https://github.com/eudev-project/eudev/pull/304]
----
- src/udev/udevd.c | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index 93d9466e0d2d..6ba3efa52555 100644
---- a/src/udev/udevd.c
-+++ b/src/udev/udevd.c
-@@ -97,7 +97,7 @@ struct event {
- unsigned long long int seqnum;
- const char *devpath;
- const char *devpath_old;
-- const char *devnode;
-+ char *devnode;
- dev_t devnum;
- int ifindex;
- bool is_block;
-@@ -140,6 +140,7 @@ static void event_free(struct event *event) {
- udev_list_node_remove(&event->node);
- udev_device_unref(event->dev);
- udev_device_unref(event->dev_kernel);
-+ free(event->devnode);
-
- if (event->worker)
- event->worker->event = NULL;
-@@ -495,7 +496,18 @@ static int event_queue_insert(struct udev_device *dev) {
- event->seqnum = udev_device_get_seqnum(dev);
- event->devpath = udev_device_get_devpath(dev);
- event->devpath_old = udev_device_get_devpath_old(dev);
-- event->devnode = udev_device_get_devnode(dev);
-+ /* Keep our own copy of the DEVNAME the event arrived with: unlike
-+ * systemd's sealed sd_device, libudev may re-read the uevent file
-+ * later (udev_monitor_send_device() -> udev_device_get_devtype()),
-+ * which frees and replaces the device's devnode string. */
-+ if (udev_device_get_devnode(dev) != NULL) {
-+ event->devnode = strdup(udev_device_get_devnode(dev));
-+ if (event->devnode == NULL) {
-+ udev_device_unref(event->dev_kernel);
-+ free(event);
-+ return -1;
-+ }
-+ }
- event->devnum = udev_device_get_devnum(dev);
- event->is_block = streq("block", udev_device_get_subsystem(dev));
- event->ifindex = udev_device_get_ifindex(dev);
diff --git a/meta/recipes-core/udev/eudev_3.2.15.bb b/meta/recipes-core/udev/eudev_3.3.0.bb
similarity index 90%
rename from meta/recipes-core/udev/eudev_3.2.15.bb
rename to meta/recipes-core/udev/eudev_3.3.0.bb
index 956ab3f6c2dc..acbe61e4fb55 100644
--- a/meta/recipes-core/udev/eudev_3.2.15.bb
+++ b/meta/recipes-core/udev/eudev_3.3.0.bb
@@ -12,14 +12,13 @@ PROVIDES = "udev"
SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \
file://init \
file://local.rules \
- file://0001-udevd-keep-a-copy-of-the-event-devnode.patch \
"
-SRC_URI[sha256sum] = "eb69809fc0d1187f2463ab2149c53aa9f42a78e59f14ebea68eae6cb6b4fc1c3"
+SRC_URI[sha256sum] = "8fba6e4f49ea4b1938828a3c2e7cc48874816c68621386e527076b6477f5d6ef"
GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases"
-inherit autotools update-rc.d pkgconfig features_check manpages github-releases
+inherit autotools bash-completion update-rc.d pkgconfig features_check manpages github-releases
CONFLICT_DISTRO_FEATURES = "systemd"
@@ -64,11 +63,13 @@ do_install:prepend:class-target () {
INITSCRIPT_NAME = "udev"
INITSCRIPT_PARAMS = "start 04 S ."
-PACKAGE_BEFORE_PN = "libudev ${PN}-hwdb"
+PACKAGE_BEFORE_PN += "libudev ${PN}-hwdb ${PN}-zsh-completion"
FILES:${PN} += "${nonarch_base_libdir}/udev"
FILES:libudev = "${base_libdir}/libudev.so.*"
FILES:${PN}-hwdb = "${sysconfdir}/udev/hwdb.d"
+FILES:${PN}-zsh-completion = "${datadir}/zsh"
+
RDEPENDS:${PN}-hwdb += "eudev"
RDEPENDS:${PN} += "kmod"
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [OE-core] [PATCH] eudev: upgrade 3.2.15 -> 3.3.0
2026-11-07 15:43 [PATCH] eudev: upgrade 3.2.15 -> 3.3.0 Alex Kiernan
@ 2026-11-08 11:52 ` Mathieu Dubois-Briand
2026-11-09 9:21 ` Alex Kiernan
0 siblings, 1 reply; 3+ messages in thread
From: Mathieu Dubois-Briand @ 2026-11-08 11:52 UTC (permalink / raw)
To: alex.kiernan, openembedded-core
On Sat Nov 7, 2026 at 4:43 PM CET, Alex Kiernan via openembedded-core wrote:
> Release notes:
>
> https://github.com/eudev-project/eudev/blob/v3.3.0/NEWS.md
>
> Drop 0001-udevd-keep-a-copy-of-the-event-devnode.patch, fixed
> differently upstream.
>
> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> ---
Hi Alex,
It looks like the test_devtool_deploy_target test is failing. It might
be just a need to increase the roofs size, but I'm still a bit surprised
by that.
2026-11-07 21:07:55,632 - oe-selftest - INFO - devtool.DevtoolDeployTargetTests.test_devtool_deploy_target (subunit.RemotedTestCase)
2026-11-07 21:07:55,633 - oe-selftest - INFO - ... FAIL
...
2026-11-07 21:07:55,633 - oe-selftest - INFO - 9: 34/75 294/793 (208.99s) (0 failed) (devtool.DevtoolDeployTargetTests.test_devtool_deploy_target)
2026-11-07 21:07:55,633 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/devtool.py", line 2139, in test_devtool_deploy_target
_deploy_and_check(extra_args, check_full_filelist=not filter_args, expected_files=expected_files)
File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/devtool.py", line 2055, in _deploy_and_check
result = runCmd(deploy_cmd)
File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/utils/commands.py", line 214, in runCmd
raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, exc_output))
AssertionError: Command 'devtool deploy-target -c mdadm root@192.168.7.2 ' returned non-zero exit status 1:
NOTE: Reconnecting to bitbake server...
Loading cache...done.
Loaded 2105 entries from dependency cache.
Parsing recipes...done.
Parsing of 1044 .bb files complete (1043 cached, 1 parsed). 2105 targets, 56 skipped, 0 masked, 0 errors.
ERROR: insufficient space on target (available 4476, needed 5449)
ERROR: Deploy failed - rerun with -s to get a complete error message
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/5222
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/5032
Can you have a look at the issue?
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [OE-core] [PATCH] eudev: upgrade 3.2.15 -> 3.3.0
2026-11-08 11:52 ` [OE-core] " Mathieu Dubois-Briand
@ 2026-11-09 9:21 ` Alex Kiernan
0 siblings, 0 replies; 3+ messages in thread
From: Alex Kiernan @ 2026-11-09 9:21 UTC (permalink / raw)
To: Mathieu Dubois-Briand; +Cc: openembedded-core
On Sun, Nov 8, 2026 at 11:52 AM Mathieu Dubois-Briand
<mathieu.dubois-briand@bootlin.com> wrote:
>
> On Sat Nov 7, 2026 at 4:43 PM CET, Alex Kiernan via openembedded-core wrote:
> > Release notes:
> >
> > https://github.com/eudev-project/eudev/blob/v3.3.0/NEWS.md
> >
> > Drop 0001-udevd-keep-a-copy-of-the-event-devnode.patch, fixed
> > differently upstream.
> >
> > Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> > ---
>
> Hi Alex,
>
> It looks like the test_devtool_deploy_target test is failing. It might
> be just a need to increase the roofs size, but I'm still a bit surprised
> by that.
>
> 2026-11-07 21:07:55,632 - oe-selftest - INFO - devtool.DevtoolDeployTargetTests.test_devtool_deploy_target (subunit.RemotedTestCase)
> 2026-11-07 21:07:55,633 - oe-selftest - INFO - ... FAIL
> ...
> 2026-11-07 21:07:55,633 - oe-selftest - INFO - 9: 34/75 294/793 (208.99s) (0 failed) (devtool.DevtoolDeployTargetTests.test_devtool_deploy_target)
> 2026-11-07 21:07:55,633 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last):
> File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/devtool.py", line 2139, in test_devtool_deploy_target
> _deploy_and_check(extra_args, check_full_filelist=not filter_args, expected_files=expected_files)
> File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/devtool.py", line 2055, in _deploy_and_check
> result = runCmd(deploy_cmd)
> File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/utils/commands.py", line 214, in runCmd
> raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, exc_output))
> AssertionError: Command 'devtool deploy-target -c mdadm root@192.168.7.2 ' returned non-zero exit status 1:
> NOTE: Reconnecting to bitbake server...
> Loading cache...done.
> Loaded 2105 entries from dependency cache.
> Parsing recipes...done.
> Parsing of 1044 .bb files complete (1043 cached, 1 parsed). 2105 targets, 56 skipped, 0 masked, 0 errors.
> ERROR: insufficient space on target (available 4476, needed 5449)
> ERROR: Deploy failed - rerun with -s to get a complete error message
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/5222
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/5032
>
> Can you have a look at the issue?
>
Looks like it's mostly from renaming so that hwdb now goes in lib not
etc. which meant the base package exploded... but running through the
NEWS.md in detail, there's more bits to pick up, so I'm just rerunning
a bunch of the tests to check what I've got looks reasonable.
--
Alex Kiernan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-09 9:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-07 15:43 [PATCH] eudev: upgrade 3.2.15 -> 3.3.0 Alex Kiernan
2026-11-08 11:52 ` [OE-core] " Mathieu Dubois-Briand
2026-11-09 9:21 ` Alex Kiernan
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.