lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <DFQX56VQ3FAV.3LIDGP9F41X1U@kernel.org>
Date: Sat, 17 Jan 2026 15:03:08 +0100
From: "Danilo Krummrich" <dakr@...nel.org>
To: "Jinhui Guo" <guojinhui.liam@...edance.com>
Cc: <alexander.h.duyck@...ux.intel.com>, <alexanderduyck@...com>,
 <bhelgaas@...gle.com>, <bvanassche@....org>, <dan.j.williams@...el.com>,
 <gregkh@...uxfoundation.org>, <helgaas@...nel.org>, <rafael@...nel.org>,
 <tj@...nel.org>, <linux-kernel@...r.kernel.org>,
 <linux-pci@...r.kernel.org>
Subject: Re: [PATCH 2/3] driver core: Add NUMA-node awareness to the
 synchronous probe path

On Wed Jan 7, 2026 at 6:55 PM CET, Jinhui Guo wrote:
> @@ -808,6 +894,8 @@ static int __driver_probe_device(const struct device_driver *drv, struct device
>  	return ret;
>  }
>  
> +DEFINE_NUMA_WRAPPER(__driver_probe_device, const struct device_driver *, struct device *)
> +
>  /**
>   * driver_probe_device - attempt to bind device & driver together
>   * @drv: driver to bind a device to
> @@ -844,6 +932,8 @@ static int driver_probe_device(const struct device_driver *drv, struct device *d
>  	return ret;
>  }
>  
> +DEFINE_NUMA_WRAPPER(driver_probe_device, const struct device_driver *, struct device *)
> +
>  static inline bool cmdline_requested_async_probing(const char *drv_name)
>  {
>  	bool async_drv;
> @@ -1000,6 +1090,8 @@ static int __device_attach_driver_scan(struct device_attach_data *data,
>  	return ret;
>  }
>  
> +DEFINE_NUMA_WRAPPER(__device_attach_driver_scan, struct device_attach_data *, bool *)

Why define three different wrappers? To me it looks like we should easily get
away with a single wrapper for __driver_probe_device(), which could just be
__driver_probe_device_node().


__device_attach_driver_scan() already has this information (i.e. we can check if
need_async == NULL). Additionally, we can change the signature of
driver_probe_device() to

	static int driver_probe_device(const struct device_driver *drv, struct device *dev, bool async)

This reduces complexity a lot, since it gets us rid of DEFINE_NUMA_WRAPPER() and
EXEC_ON_NUMA_NODE() macros.

>  static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)
>  {
>  	struct device *dev = _dev;
> @@ -1055,7 +1147,9 @@ static int __device_attach(struct device *dev, bool allow_async)
>  			.want_async = false,
>  		};
>  
> -		ret = __device_attach_driver_scan(&data, &async);
> +		ret = EXEC_ON_NUMA_NODE(dev_to_node(dev),
> +					__device_attach_driver_scan,
> +					&data, &async);
>  	}
>  out_unlock:
>  	device_unlock(dev);
> @@ -1142,7 +1236,9 @@ int device_driver_attach(const struct device_driver *drv, struct device *dev)
>  	int ret;
>  
>  	__device_driver_lock(dev, dev->parent);
> -	ret = __driver_probe_device(drv, dev);
> +	ret = EXEC_ON_NUMA_NODE(dev_to_node(dev),
> +				__driver_probe_device,
> +				drv, dev);
>  	__device_driver_unlock(dev, dev->parent);
>  
>  	/* also return probe errors as normal negative errnos */
> @@ -1231,7 +1327,9 @@ static int __driver_attach(struct device *dev, void *data)
>  	}
>  
>  	__device_driver_lock(dev, dev->parent);
> -	driver_probe_device(drv, dev);
> +	EXEC_ON_NUMA_NODE(dev_to_node(dev),
> +			  driver_probe_device,
> +			  drv, dev);
>  	__device_driver_unlock(dev, dev->parent);
>  
>  	return 0;
> -- 
> 2.20.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ