Re: [patch] scsi: netlink: avoid including netlink interface in scsi module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 2010-11-01 04:19, Randy Dunlap wrote:
>On 10/31/10 11:50, Jan Engelhardt wrote:
>> scsi: netlink: avoid including netlink interface in scsi module
>
>Mostly looks good to me, just one warning:
>drivers/scsi/scsi_netlink.c:678: warning: initialization from incompatible pointer type
>The init() function should return an int (status/error code).

Ah indeed, thank you. I must have missed that somehow. Maybe I should get a
slower CPU so that I actually have time to read messages (make -j8 kinda rushes
just through, despite kbuild-2.6's efforts to reduce 2.4-ish verbosity :)


Updated: As this is now a separate module, I took the courtesy to
err out completely if scsi_nl_add_transport fails.


parent 3985c7ce85039adacdf882904ca096f091d39346 (v2.6.36-9871-g3985c7c)
commit 78d7ac1cd86667ad5735fd3899b7cea55ec50aed
Author: Jan Engelhardt <jengelh@xxxxxxxxxx>
Date:   Sat Oct 30 19:51:53 2010 +0200

scsi: netlink: avoid including netlink interface in scsi module

Only scsi_transport_fc needs it, so don't include it in scsi_mod
if fc=m.

Cc: Randy Dunlap <randy.dunlap@xxxxxxxxxx>
Signed-off-by: Jan Engelhardt <jengelh@xxxxxxxxxx>
---
 drivers/scsi/Kconfig        |    3 ++-
 drivers/scsi/Makefile       |    2 +-
 drivers/scsi/scsi.c         |    3 ---
 drivers/scsi/scsi_netlink.c |   22 +++++++++++++---------
 drivers/scsi/scsi_priv.h    |    7 +------
 5 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 8616496..b4e1e2d 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -48,8 +48,9 @@ config SCSI_TGT
 	  If you choose M, the module will be called scsi_tgt.
 
 config SCSI_NETLINK
-	bool
+	tristate "SCSI Netlink interface"
 	default	n
+	depends on SCSI
 	select NET
 
 config SCSI_PROC_FS
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 2e9a87e..0870038 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -161,7 +161,7 @@ scsi_mod-y			+= scsi.o hosts.o scsi_ioctl.o constants.o \
 				   scsicam.o scsi_error.o scsi_lib.o
 scsi_mod-$(CONFIG_SCSI_DMA)	+= scsi_lib_dma.o
 scsi_mod-y			+= scsi_scan.o scsi_sysfs.o scsi_devinfo.o
-scsi_mod-$(CONFIG_SCSI_NETLINK)	+= scsi_netlink.o
+obj-$(CONFIG_SCSI_NETLINK)	+= scsi_netlink.o
 scsi_mod-$(CONFIG_SYSCTL)	+= scsi_sysctl.o
 scsi_mod-$(CONFIG_SCSI_PROC_FS)	+= scsi_proc.o
 scsi_mod-y			+= scsi_trace.o
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 348fba0..31a07b1 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -1335,8 +1335,6 @@ static int __init init_scsi(void)
 	if (error)
 		goto cleanup_sysctl;
 
-	scsi_netlink_init();
-
 	printk(KERN_NOTICE "SCSI subsystem initialized\n");
 	return 0;
 
@@ -1357,7 +1355,6 @@ cleanup_queue:
 
 static void __exit exit_scsi(void)
 {
-	scsi_netlink_exit();
 	scsi_sysfs_unregister();
 	scsi_exit_sysctl();
 	scsi_exit_hosts();
diff --git a/drivers/scsi/scsi_netlink.c b/drivers/scsi/scsi_netlink.c
index d53e650..c01cf67 100644
--- a/drivers/scsi/scsi_netlink.c
+++ b/drivers/scsi/scsi_netlink.c
@@ -18,6 +18,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  */
+#include <linux/module.h>
 #include <linux/time.h>
 #include <linux/jiffies.h>
 #include <linux/security.h>
@@ -481,8 +482,7 @@ EXPORT_SYMBOL_GPL(scsi_nl_remove_driver);
  * 	the SCSI transport netlink interface
  *
  **/
-void
-scsi_netlink_init(void)
+static int __init scsi_netlink_init(void)
 {
 	int error;
 
@@ -492,7 +492,7 @@ scsi_netlink_init(void)
 	if (error) {
 		printk(KERN_ERR "%s: register of event handler failed - %d\n",
 				__func__, error);
-		return;
+		return error;
 	}
 
 	scsi_nl_sock = netlink_kernel_create(&init_net, NETLINK_SCSITRANSPORT,
@@ -502,16 +502,19 @@ scsi_netlink_init(void)
 		printk(KERN_ERR "%s: register of recieve handler failed\n",
 				__func__);
 		netlink_unregister_notifier(&scsi_netlink_notifier);
-		return;
+		return -ENOMEM;
 	}
 
 	/* Register the entry points for the generic SCSI transport */
 	error = scsi_nl_add_transport(SCSI_NL_TRANSPORT,
 				scsi_generic_msg_handler, NULL);
-	if (error)
+	if (error) {
 		printk(KERN_ERR "%s: register of GENERIC transport handler"
 				"  failed - %d\n", __func__, error);
-	return;
+		netlink_kernel_release(scsi_nl_sock);
+		netlink_unregister_notifier(&scsi_netlink_notifier);
+	}
+	return error;
 }
 
 
@@ -519,8 +522,7 @@ scsi_netlink_init(void)
  * scsi_netlink_exit - Called by SCSI subsystem to disable the SCSI transport netlink interface
  *
  **/
-void
-scsi_netlink_exit(void)
+static void __exit scsi_netlink_exit(void)
 {
 	scsi_nl_remove_transport(SCSI_NL_TRANSPORT);
 
@@ -676,4 +678,6 @@ send_vendor_fail:
 }
 EXPORT_SYMBOL(scsi_nl_send_vendor_msg);
 
-
+module_init(scsi_netlink_init);
+module_exit(scsi_netlink_exit);
+MODULE_LICENSE("GPL");
diff --git a/drivers/scsi/scsi_priv.h b/drivers/scsi/scsi_priv.h
index b4056d1..55fba9e 100644
--- a/drivers/scsi/scsi_priv.h
+++ b/drivers/scsi/scsi_priv.h
@@ -136,13 +136,8 @@ extern struct bus_type scsi_bus_type;
 extern const struct attribute_group *scsi_sysfs_shost_attr_groups[];
 
 /* scsi_netlink.c */
-#ifdef CONFIG_SCSI_NETLINK
-extern void scsi_netlink_init(void);
-extern void scsi_netlink_exit(void);
+#if defined(CONFIG_SCSI_NETLINK) || defined(CONFIG_SCSI_NETLINK_MODULE)
 extern struct sock *scsi_nl_sock;
-#else
-static inline void scsi_netlink_init(void) {}
-static inline void scsi_netlink_exit(void) {}
 #endif
 
 /* scsi_pm.c */
-- 
# Created with git-export-patch
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux