Re: [PATCH 2/2] driver core: Print device in really_probe() warning backtrace

From: Greg Kroah-Hartman
Date: Thu Nov 21 2019 - 08:57:48 EST


On Wed, Nov 20, 2019 at 03:36:19PM +0100, Geert Uytterhoeven wrote:
> If a device already has devres items attached before probing, a warning
> backtrace is printed. However, this backtrace does not reveal the
> offending device, leaving the user uninformed.
>
> Use dev_WARN_ON() instead of WARN_ON() to fix this.
>
> Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> ---
> drivers/base/dd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/base/dd.c b/drivers/base/dd.c
> index d811e60610d33ae9..a7e8040ef0003f44 100644
> --- a/drivers/base/dd.c
> +++ b/drivers/base/dd.c
> @@ -516,7 +516,7 @@ static int really_probe(struct device *dev, struct device_driver *drv)
> atomic_inc(&probe_count);
> pr_debug("bus: '%s': %s: probing driver %s with device %s\n",
> drv->bus->name, __func__, drv->name, dev_name(dev));
> - WARN_ON(!list_empty(&dev->devres_head));
> + dev_WARN_ON(dev, !list_empty(&dev->devres_head));

We really do not want WARN_ON() anywhere, as that causes systems with
panic-on-warn to reboot.

If this can happen, we should switch it to a real error message, with
dev_err() and the like, and recover properly.

I don't want to make it easier to add WARN_ON() lines, like
dev_WARN_ON() would allow, instead we should be removing them, as they
encourage slopping programming habits.

thanks,

greg k-h