diff mbox

[RESEND] spi: of: do explicitly request modules for of-registered devices

Message ID 20150325203222.GA8845@dtor-ws (mailing list archive)
State New, archived
Headers show

Commit Message

Dmitry Torokhov March 25, 2015, 8:32 p.m. UTC
Trying to register an SPI device asynchronously (via async_schedule() call)
results in an ugly complaint from request_module() warning about potential
deadlock (because request_module tries to wait for async works to
complete, the caller is also an async work in this case).

While we could try to switch to using request_module_nowait(), other buses,
as well as SPI itself when not using device tree, do not try to load
modules explicitly, but rather rely on the standard infrastructure (such as
udev) to execute module loading. There is no reason why SPI OF-described
devices should be treated differently.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---

Mark,

I chatted with Grant who I believe added the code originally and he said
he does not recall a good reason for it to actually be there.

Thanks!

 drivers/spi/spi.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Mark Brown March 25, 2015, 9:36 p.m. UTC | #1
On Wed, Mar 25, 2015 at 01:32:22PM -0700, Dmitry Torokhov wrote:
> Trying to register an SPI device asynchronously (via async_schedule() call)
> results in an ugly complaint from request_module() warning about potential
> deadlock (because request_module tries to wait for async works to
> complete, the caller is also an async work in this case).

Applied, thanks.
diff mbox

Patch

diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index c64a3e5..102a9e6 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -16,7 +16,6 @@ 
  */
 
 #include <linux/kernel.h>
-#include <linux/kmod.h>
 #include <linux/device.h>
 #include <linux/init.h>
 #include <linux/cache.h>
@@ -1359,7 +1358,6 @@  of_register_spi_device(struct spi_master *master, struct device_node *nc)
 	spi->dev.of_node = nc;
 
 	/* Register the new device */
-	request_module("%s%s", SPI_MODULE_PREFIX, spi->modalias);
 	rc = spi_add_device(spi);
 	if (rc) {
 		dev_err(&master->dev, "spi_device register error %s\n",