Openembedded Core Discussions
 help / color / mirror / Atom feed
From: "Mathieu Dubois-Briand" <mathieu.dubois-briand@bootlin.com>
To: <alex.kiernan@gmail.com>, <openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [PATCH 2/2] eudev: upgrade 3.2.14 -> 3.2.15
Date: Fri, 16 Oct 2026 10:18:01 +0200	[thread overview]
Message-ID: <DM6454M8AZXW.22GK84O103WXZ@bootlin.com> (raw)
In-Reply-To: <20261015-eudev-3-2-15-v1-2-407ba1a93edb@gmail.com>

On Thu Oct 15, 2026 at 3:08 PM CEST, Alex Kiernan via lists.openembedded.org wrote:
> Drop backported commits.
>
> Changes:
>
...
>
> Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> ---

Hi Alex,

Thanks for the upgrade. But it looks like we can see runtime failures,
at lease on x86 qemu:

-----------------------
Central error: [    1.369029] udevd[144]: segfault at 7f9e4cea81c0 ip 00007f9e4d5f5643 sp 00007ffcea775058 error 4 in libc.so[3a643,7f9e4d5cd000+6e000] likely on CPU 0 (core 0, socket 0)
***********************
[    1.324424] VFS: Pivoted into new rootfs
[    1.325948] Freeing unused kernel image (initmem) memory: 3804K
[    1.327763] Write protecting the kernel read-only data: 30720k
[    1.329535] input: QEMU QEMU USB Tablet as /devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1:1.0/0003:0627:0001.0001/input/input1
[    1.332703] hid-generic 0003:0627:0001.0001: input: USB HID v0.01 Mouse [QEMU QEMU USB Tablet] on usb-0000:00:1d.7-1/input0
[    1.332741] Freeing unused kernel image (text/rodata gap) memory: 732K
[    1.337474] Freeing unused kernel image (rodata/data gap) memory: 1588K
[    1.339154] Run /sbin/init as init process
[    1.340184]   with arguments:
[    1.340185]     /sbin/init
[    1.340186]   with environment:
[    1.340186]     HOME=/
[    1.340187]     TERM=linux
[    1.356209] udevd[143]: starting version 3.2.15
[    1.360803] udevd[144]: starting eudev-3.2.15
[    1.369029] udevd[144]: segfault at 7f9e4cea81c0 ip 00007f9e4d5f5643 sp 00007ffcea775058 error 4 in libc.so[3a643,7f9e4d5cd000+6e000] likely on CPU 0 (core 0, socket 0)
[    1.373539] Code: ca 74 e4 e9 69 ff ff ff 0f 1f 80 00 00 00 00 48 89 f8 c3 0f 1f 40 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 0f b6 17 <0f> b6 0e 31 c0 38 ca 74 25 eb 32 0f 1f 80 00 00 00 00 66 66 2e 0f
[    1.446848] usb 1-2: new high-speed USB device number 3 using ehci-pci
[    1.579181] input: QEMU QEMU USB Keyboard as /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/0003:0627:0001.0002/input/input2
[    1.633000] hid-generic 0003:0627:0001.0002: input: USB HID v1.11 Keyboard [QEMU QEMU USB Keyboard] on usb-0000:00:1d.7-2/input0
[  121.483345] EXT4-fs (vda): re-mounted 7b4506d6-59d8-4ca9-87c3-880a5a0dcf6c.

This did happen a few times in a row on rebuild:

https://autobuilder.yoctoproject.org/valkyrie/#/builders/110/builds/1371
https://autobuilder.yoctoproject.org/valkyrie/#/builders/110/builds/1372
https://autobuilder.yoctoproject.org/valkyrie/#/builders/110/builds/1373
https://autobuilder.yoctoproject.org/valkyrie/#/builders/110/builds/1379

Can you have a look at the issue?

Also, about the commit message: we try to embedded a bit of the
changelog on upgrades, but this one is definitely too long. There is no
hard constraint, but a good excerpt is probably between 5 and 30 lines.
Can you trim it down a bit?

Thanks,
Mathieu

>  ....c-sync-dev_urandom-implementation-to-sys.patch | 138 ---------------------
>  meta/recipes-core/udev/eudev/netifnames.patch      |  17 ---
>  .../udev/{eudev_3.2.14.bb => eudev_3.2.15.bb}      |   4 +-
>  3 files changed, 1 insertion(+), 158 deletions(-)
>
> diff --git a/meta/recipes-core/udev/eudev/0001-random-util.c-sync-dev_urandom-implementation-to-sys.patch b/meta/recipes-core/udev/eudev/0001-random-util.c-sync-dev_urandom-implementation-to-sys.patch
> deleted file mode 100644
> index 668aa731aca1..000000000000
> --- a/meta/recipes-core/udev/eudev/0001-random-util.c-sync-dev_urandom-implementation-to-sys.patch
> +++ /dev/null
> @@ -1,138 +0,0 @@
> -From 95c871b7b912f39539777ac222ef7f8798bb0225 Mon Sep 17 00:00:00 2001
> -From: Masahisa Kojima <kojima.masahisa@socionext.com>
> -Date: Thu, 25 Apr 2024 17:23:10 +0900
> -Subject: [PATCH] random-util.c: sync dev_urandom implementation to
> - systemd-udev
> -
> -Current dev_urandom() assumes that reading /dev/urandom
> -will never block regardless if the random pool is fully
> -initialized or not.
> -This assumption is no longer applicable since linux kerrnel
> -enforces the /dev/urandom entropy initialization from
> -v5.18-rc2 with the commit:
> -48bff1053c17 ("random: opportunistically initialize on /dev/urandom reads").
> -
> -With this, when we use the linux v5.18-rc2 or later,
> -dev_urandom() will block if enough random pool is not supplied.
> -It causes the boot delay, typically 1024msec(4msec * 256 = 1024msec)
> -delay to fill the 256 bits entropy for the case CONFIG_HZ=250.
> -
> -To prevent this boot delay, this commit syncs dev_urandom()
> -implementation to the systemd-udev.
> -The systemd-udev implementation of reading /dev/urandom is as follows.
> - - Try to get random with calling getrandom(GRND_INSECURE)
> - - If kernel does not support GRND_INSECURE, fallback to GRND_NONBLOCK
> - - If enough entropy is not supplied, fallback to reading /dev/urandom,
> -   this will block when the kernel version is v5.18-rc2 or later
> -
> -With this modification, dev_urandom() tries not to block
> -as much as possible.
> -
> -This modification still keeps the backword compatibility,
> -dev_random() will never block if the commit(48bff1053c17) is not
> -applied to the linux kernel, the behavior is same as before
> -in this case.
> -
> -Upstream-Status: Backport [a49a3aaa460add6ae7ea208b4cac630e56fe1180]
> -Signed-off-by: Masahisa Kojima <kojima.masahisa@socionext.com>
> ----
> - src/shared/missing.h     |  4 +++
> - src/shared/random-util.c | 70 ++++++++++++++++++----------------------
> - 2 files changed, 35 insertions(+), 39 deletions(-)
> -
> -diff --git a/src/shared/missing.h b/src/shared/missing.h
> -index 1967840cdbf3..1caec0f9207c 100644
> ---- a/src/shared/missing.h
> -+++ b/src/shared/missing.h
> -@@ -79,6 +79,10 @@ static inline int getrandom(void *buffer, size_t count, unsigned flags) {
> - #define GRND_RANDOM 0x0002
> - #endif
> - 
> -+#ifndef GRND_INSECURE
> -+#define GRND_INSECURE 0x0004
> -+#endif
> -+
> - #ifndef BTRFS_IOCTL_MAGIC
> - #define BTRFS_IOCTL_MAGIC 0x94
> - #endif
> -diff --git a/src/shared/random-util.c b/src/shared/random-util.c
> -index 01a28c8ef4e9..852b00e4ce2b 100644
> ---- a/src/shared/random-util.c
> -+++ b/src/shared/random-util.c
> -@@ -31,45 +31,37 @@
> - #include "util.h"
> - 
> - int dev_urandom(void *p, size_t n) {
> --        static int have_syscall = -1;
> --
> --        _cleanup_close_ int fd = -1;
> --        int r;
> --
> --        /* Gathers some randomness from the kernel. This call will
> --         * never block, and will always return some data from the
> --         * kernel, regardless if the random pool is fully initialized
> --         * or not. It thus makes no guarantee for the quality of the
> --         * returned entropy, but is good enough for or usual usecases
> --         * of seeding the hash functions for hashtable */
> --
> --        /* Use the getrandom() syscall unless we know we don't have
> --         * it, or when the requested size is too large for it. */
> --        if (have_syscall != 0 || (size_t) (int) n != n) {
> --                r = getrandom(p, n, GRND_NONBLOCK);
> --                if (r == (int) n) {
> --                        have_syscall = true;
> --                        return 0;
> --                }
> --
> --                if (r < 0) {
> --                        if (errno == ENOSYS)
> --                                /* we lack the syscall, continue with
> --                                 * reading from /dev/urandom */
> --                                have_syscall = false;
> --                        else if (errno == EAGAIN)
> --                                /* not enough entropy for now. Let's
> --                                 * remember to use the syscall the
> --                                 * next time, again, but also read
> --                                 * from /dev/urandom for now, which
> --                                 * doesn't care about the current
> --                                 * amount of entropy.  */
> --                                have_syscall = true;
> --                        else
> --                                return -errno;
> --                } else
> --                        /* too short read? */
> --                        return -ENODATA;
> -+        static bool have_getrandom = true, have_grndinsecure = true;
> -+        _cleanup_close_ int fd = -EBADF;
> -+
> -+        if (n == 0)
> -+                return 0;
> -+
> -+        for (;;) {
> -+                ssize_t l;
> -+
> -+                if (!have_getrandom)
> -+                        break;
> -+
> -+                l = getrandom(p, n, have_grndinsecure ? GRND_INSECURE : GRND_NONBLOCK);
> -+                if (l > 0) {
> -+                        if ((size_t) l == n)
> -+                                return 0; /* Done reading, success. */
> -+                        p = (uint8_t *) p + l;
> -+                        n -= l;
> -+                        continue; /* Interrupted by a signal; keep going. */
> -+                } else if (l == 0)
> -+                        break; /* Weird, so fallback to /dev/urandom. */
> -+                else if (errno == ENOSYS) {
> -+                        have_getrandom = false;
> -+                        break; /* No syscall, so fallback to /dev/urandom. */
> -+                } else if (errno == EINVAL && have_grndinsecure) {
> -+                        have_grndinsecure = false;
> -+                        continue; /* No GRND_INSECURE; fallback to GRND_NONBLOCK. */
> -+                } else if (errno == EAGAIN && !have_grndinsecure)
> -+                        break; /* Will block, but no GRND_INSECURE, so fallback to /dev/urandom. */
> -+
> -+                break; /* Unexpected, so just give up and fallback to /dev/urandom. */
> -         }
> - 
> -         fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC|O_NOCTTY);
> diff --git a/meta/recipes-core/udev/eudev/netifnames.patch b/meta/recipes-core/udev/eudev/netifnames.patch
> deleted file mode 100644
> index 4f8e54d12d4a..000000000000
> --- a/meta/recipes-core/udev/eudev/netifnames.patch
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -eudev: consider ID_NET_NAME_MAC as an interface name
> -
> -eudev might not create names based on slot or path.
> -
> -Upstream-Status: Backport [github.com/eudev-project/eudev/pull/274]
> -
> -Signed-off-by: Joe Slater <joe.slater@windriver.com>
> -
> ---- a/rules/80-net-name-slot.rules
> -+++ b/rules/80-net-name-slot.rules
> -@@ -10,5 +10,6 @@ ENV{net.ifnames}=="0", GOTO="net_name_sl
> - NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}"
> - NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
> - NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
> -+NAME=="", ENV{ID_NET_NAME_MAC}!="", NAME="$env{ID_NET_NAME_MAC}"
> - 
> - LABEL="net_name_slot_end"
> diff --git a/meta/recipes-core/udev/eudev_3.2.14.bb b/meta/recipes-core/udev/eudev_3.2.15.bb
> similarity index 93%
> rename from meta/recipes-core/udev/eudev_3.2.14.bb
> rename to meta/recipes-core/udev/eudev_3.2.15.bb
> index 3e4972694ac0..2ff2370bcb5e 100644
> --- a/meta/recipes-core/udev/eudev_3.2.14.bb
> +++ b/meta/recipes-core/udev/eudev_3.2.15.bb
> @@ -10,13 +10,11 @@ DEPENDS = "gperf-native"
>  PROVIDES = "udev"
>  
>  SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \
> -           file://netifnames.patch \
>             file://init \
>             file://local.rules \
> -           file://0001-random-util.c-sync-dev_urandom-implementation-to-sys.patch \
>             "
>  
> -SRC_URI[sha256sum] = "8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc1927f006f"
> +SRC_URI[sha256sum] = "eb69809fc0d1187f2463ab2149c53aa9f42a78e59f14ebea68eae6cb6b4fc1c3"
>  
>  GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases"
>  




-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



  reply	other threads:[~2026-10-16  8:18 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-15 13:08 [PATCH 0/2] eudev: upgrade 3.2.14 -> 3.2.15 Alex Kiernan
2026-10-15 13:08 ` [PATCH 1/2] base-passwd: add the render group for eudev-3.2.15 Alex Kiernan
2026-10-15 13:08 ` [PATCH 2/2] eudev: upgrade 3.2.14 -> 3.2.15 Alex Kiernan
2026-10-16  8:18   ` Mathieu Dubois-Briand [this message]
2026-10-16 12:16     ` [OE-core] " Alex Kiernan

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=DM6454M8AZXW.22GK84O103WXZ@bootlin.com \
    --to=mathieu.dubois-briand@bootlin.com \
    --cc=alex.kiernan@gmail.com \
    --cc=openembedded-core@lists.openembedded.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