[EXTERNAL] [PATCH v5 1/4] eal/linux: filter uevent Netlink in kernel

Long Li longli at microsoft.com
Thu Aug 20 03:38:17 CEST 2026


> The EAL uevent only needs/wants messages from the kernel.
> Better to let kernel side do the filtering to avoid any overrun issues in DPDK
> interrupt thread.
> 
> There is no exposed API definition here. The convention is kernel is 1 and
> libudev uses 2.
> 
> Since kernel is now filtering can remove step in uevent parsing.
> 
> Fixes: 0d0f478d0483 ("eal/linux: add uevent parse and process")
> Cc: stable at dpdk.org
> 
> Reported-by: Randy Tice <rtice at cisco.com>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>

Reviewed-by: Long Li <longli at microsoft.com>




> ---
>  .mailmap                | 1 +
>  lib/eal/linux/eal_dev.c | 8 ++++----
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/.mailmap b/.mailmap
> index fcb3d1bb3f..9b7713b6df 100644
> --- a/.mailmap
> +++ b/.mailmap
> @@ -1380,6 +1380,7 @@ Ralf Hoffmann <ralf.hoffmann at allegro-
> packets.com>
>  Rami Rosen <ramirose at gmail.com> <rami.rosen at intel.com>  Rami Rosen
> <ramirose at gmail.com> <roszenrami at gmail.com>  Randy Schacher
> <stuart.schacher at broadcom.com>
> +Randy Tice <rtice at cisco.com>
>  Rani Sharoni <ranish at nvidia.com>
>  Ranjit Menon <ranjit.menon at intel.com>
>  Rasesh Mody <rmody at marvell.com> <rasesh.mody at cavium.com> diff --git
> a/lib/eal/linux/eal_dev.c b/lib/eal/linux/eal_dev.c index
> ec408649d0..666967667f 100644
> --- a/lib/eal/linux/eal_dev.c
> +++ b/lib/eal/linux/eal_dev.c
> @@ -29,6 +29,9 @@ static bool hotplug_handle;  #define EAL_UEV_MSG_LEN
> 4096  #define EAL_UEV_MSG_ELEM_LEN 128
> 
> +/* Listen only to messages from kernel (not libudev) */ #define
> +EAL_UEV_GROUP_KERNEL 1
> +
>  /*
>   * spinlock for device hot-unplug failure handling. If it try to access bus or
>   * device, such as handle sigbus on bus or handle memory failure for device
> @@ -116,7 +119,7 @@ dev_uev_socket_fd_create(void)
>  	memset(&addr, 0, sizeof(addr));
>  	addr.nl_family = AF_NETLINK;
>  	addr.nl_pid = 0;
> -	addr.nl_groups = 0xffffffff;
> +	addr.nl_groups = EAL_UEV_GROUP_KERNEL;
> 
>  	ret = bind(fd, (struct sockaddr *) &addr, sizeof(addr));
>  	if (ret < 0) {
> @@ -164,9 +167,6 @@ dev_uev_parse(const char *buf, struct rte_dev_event
> *event, int length)
>  		 * check device uevent from kernel side, no need to check
>  		 * uevent from udev.
>  		 */
> -		if (!strncmp(buf, "libudev", 7)) {
> -			return -1;
> -		}
>  		if (!strncmp(buf, "ACTION=", 7)) {
>  			buf += 7;
>  			i += 7;
> --
> 2.53.0



More information about the stable mailing list