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!).

Reply via email to