hsi: omap_ssi_port: use normal module refcounting
PATCH 1/1 hsi: omap_ssi_port: use normal module refcounting
The ref_module() function is used for internal housekeeping of the module code, it's not normally used by subsystems or device drivers, and the use of ref_module in the omap_ssi_port driver causes a link build error when modules are disabled:
hsi/controllers/omap_ssi_port.c: In function 'ssi_port_probe':hsi/controllers/omap_ssi_port.c:1119:2: error: implicit declaration of function 'ref_module' [-Werror=implicit-function-declaration]
This changes the omap_ssi_port driver to use try_module_get() and module_put() instead, which is the normal way to ensure that the driver providing a device used in another module does not go away.
drivers/hsi/controllers/omap_ssi_port.c +2 -2
@@ -1116,8 +1116,7 @@ static int __init ssi_port_probe(struct platform_device *pd)dev_dbg (&pd->dev,"init ssi port...\n" ); - err =ref_module (THIS_MODULE , ssi->owner); -if (err) { +if (!try_module_get (ssi->owner)) {dev_err (&pd->dev,"could not increment parent module refcount (err=%d)\n" , err);return -ENODEV ;
@@ -1254,6 +1253,7 @@ static int __exit ssi_port_remove(struct platform_device *pd) omap_ssi->port[omap_port->port_id] =NULL ;platform_set_drvdata (pd,NULL ); +module_put (port->owner);pm_runtime_disable (&pd->dev);return 0 ;
PATCH v2 1/1 hsi: omap_ssi_port: use normal module refcounting
The ref_module() function is used for internal housekeeping of the module code, it's not normally used by subsystems or device drivers, and the use of ref_module in the omap_ssi_port driver causes a link build error when modules are disabled:
hsi/controllers/omap_ssi_port.c: In function 'ssi_port_probe':hsi/controllers/omap_ssi_port.c:1119:2: error: implicit declaration of function 'ref_module' [-Werror=implicit-function-declaration]
This changes the omap_ssi_port driver to use try_module_get() and module_put() instead, which is the normal way to ensure that the driver providing a device used in another module does not go away.
---
v2: fix a stupid typo, I accidentally sent out the wrong version of the patch
drivers/hsi/controllers/omap_ssi_port.c +2 -2
@@ -1116,8 +1116,7 @@ static int __init ssi_port_probe(struct platform_device *pd)dev_dbg (&pd->dev,"init ssi port...\n" ); - err =ref_module (THIS_MODULE , ssi->owner); -if (err) { +if (!try_module_get (ssi->owner)) {dev_err (&pd->dev,"could not increment parent module refcount (err=%d)\n" , err);return -ENODEV ;
@@ -1254,6 +1253,7 @@ static int __exit ssi_port_remove(struct platform_device *pd) omap_ssi->port[omap_port->port_id] =NULL ;platform_set_drvdata (pd,NULL ); +module_put (ssi->owner);pm_runtime_disable (&pd->dev);return 0 ;
Hi,
Quoted 5 lines · Arnd Bergmann
The
ref_module()function is used for internal housekeeping of the module code, it's not normally used by subsystems or device drivers, and the use ofref_modulein theomap_ssi_portdriver causes a link build error when modules are disabled:
Quoted 7 lines
hsi/controllers/omap_ssi_port.c: In function 'ssi_port_probe':hsi/controllers/omap_ssi_port.c:1119:2: error: implicit declaration of function 'ref_module' [-Werror=implicit-function-declaration]This changes the
omap_ssi_portdriver to usetry_module_get()andmodule_put()instead, which is the normal way to ensure that the driver providing a device used in another module does not go away.
Thanks, applied:
-- Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140605/8de21a91/attachment.sig>