Re: [PATCH v3 4/6] net/core: apply pm_runtime_set_memalloc_noio onnetwork devices

From: Alan Stern
Date: Mon Oct 29 2012 - 11:43:56 EST


On Mon, 29 Oct 2012, Ming Lei wrote:

> Deadlock might be caused by allocating memory with GFP_KERNEL in
> runtime_resume callback of network devices in iSCSI situation, so
> mark network devices and its ancestor as 'memalloc_noio_resume'
> with the introduced pm_runtime_set_memalloc_noio().

> @@ -1411,6 +1414,8 @@ int netdev_register_kobject(struct net_device *net)
> *groups++ = &netstat_group;
> #endif /* CONFIG_SYSFS */
>
> + pm_runtime_set_memalloc_noio(dev, true);
> +
> error = device_add(dev);
> if (error)
> return error;

This is an example of what I described earlier. The
pm_runtime_set_memalloc_noio() call should come after device_add(), not
before.

(Not to mention that this version of the code doesn't correctly handle
the case where device_add() fails.)

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/