浏览代码

[PATCH] genetlink: don't touch module ref count

Increasing the module ref count at registration will block the module from
ever being unloaded. In fact, genetlink should not care about the owner at
all. This patch removes the owner field from the struct registered with
genetlink.

Signed-off-by: Per Liden <per.liden@ericsson.com>
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
Per Liden 19 年之前
父节点
当前提交
23b0ca5bf5
共有 3 个文件被更改,包括 0 次插入9 次删除
  1. 0 1
      include/net/genetlink.h
  2. 0 7
      net/netlink/genetlink.c
  3. 0 1
      net/tipc/netlink.c

+ 0 - 1
include/net/genetlink.h

@@ -22,7 +22,6 @@ struct genl_family
 	char			name[GENL_NAMSIZ];
 	unsigned int		version;
 	unsigned int		maxattr;
-	struct module *		owner;
 	struct nlattr **	attrbuf;	/* private */
 	struct list_head	ops_list;	/* private */
 	struct list_head	family_list;	/* private */

+ 0 - 7
net/netlink/genetlink.c

@@ -222,11 +222,6 @@ int genl_register_family(struct genl_family *family)
 		goto errout_locked;
 	}
 
-	if (!try_module_get(family->owner)) {
-		err = -EBUSY;
-		goto errout_locked;
-	}
-
 	if (family->id == GENL_ID_GENERATE) {
 		u16 newid = genl_generate_id();
 
@@ -283,7 +278,6 @@ int genl_unregister_family(struct genl_family *family)
 		INIT_LIST_HEAD(&family->ops_list);
 		genl_unlock();
 
-		module_put(family->owner);
 		kfree(family->attrbuf);
 		genl_ctrl_event(CTRL_CMD_DELFAMILY, family);
 		return 0;
@@ -535,7 +529,6 @@ static struct genl_family genl_ctrl = {
 	.name = "nlctrl",
 	.version = 0x1,
 	.maxattr = CTRL_ATTR_MAX,
-	.owner = THIS_MODULE,
 };
 
 static int __init genl_init(void)

+ 0 - 1
net/tipc/netlink.c

@@ -72,7 +72,6 @@ static struct genl_family family = {
         .version	= TIPC_GENL_VERSION,
         .hdrsize	= TIPC_GENL_HDRLEN,
         .maxattr	= 0,
-	.owner		= THIS_MODULE,
 };
 
 static struct genl_ops ops = {