On Mon, 8 Jun 2026 13:39:34 +0800 Guixin Liu <[email protected]> wrote:
> The kselftests case uevent.uevent_filtering fails reproducibly on busy
> systems (e.g. Intel EMR / AMD servers) with:
>
> No buffer space available - Failed to receive uevent
>
> The listener binds the NETLINK_KOBJECT_UEVENT socket to all 32 multicast
> groups (nl_groups = -1) but only sets SO_RCVBUF to 4 KiB
> (__UEVENT_BUFFER_SIZE = 2048 * 2). On hosts with many devices, the
> kernel and userspace daemons (udev/systemd) constantly emit uevents on
> multiple groups, plus the test itself triggers 10 add events in a row.
> The 4 KiB receive buffer overflows before the listener can drain it,
> recvmsg() returns -ENOBUFS, and the test bails out as failure.
>
> Increase __UEVENT_BUFFER_SIZE to 1 MiB so the receive buffer is large
> enough to absorb the burst of uevents on busy systems. After this
> change the test passes consistently across dozens of runs on Intel EMR
> and AMD platforms.
>
Fair enough.
> --- a/tools/testing/selftests/uevent/uevent_filtering.c
> +++ b/tools/testing/selftests/uevent/uevent_filtering.c
> @@ -22,7 +22,7 @@
> #include "kselftest_harness.h"
>
> #define __DEV_FULL "/sys/devices/virtual/mem/full/uevent"
> -#define __UEVENT_BUFFER_SIZE (2048 * 2)
> +#define __UEVENT_BUFFER_SIZE (1024 * 1024)
> #define __UEVENT_HEADER "add@/devices/virtual/mem/full"
> #define __UEVENT_HEADER_LEN sizeof("add@/devices/virtual/mem/full")
> #define __UEVENT_LISTEN_ALL -1
scripts/get_maintainer.sh isn't very useful with selftests code. But
git-blame can be used to find out who to Cc (hi, Christian!).