在 2026/6/10 09:34, Andrew Morton 写道:
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!).
Got it, thanks.
In addtion, It's nice to get a rb tag.
Best Regards,
Guixin Liu