genetlink: Optimize genl_register_family()
Krishna Kumar [Wed, 14 Oct 2009 19:54:53 +0000 (19:54 +0000)]
genl_register_family() doesn't need to call genl_family_find_byid
when GENL_ID_GENERATE is passed during register.

Patch on net-next-2.6, compile and reboot testing only.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

net/netlink/genetlink.c

index 44ff3f3..ddfdb7d 100644 (file)
@@ -374,11 +374,6 @@ int genl_register_family(struct genl_family *family)
                goto errout_locked;
        }
 
-       if (genl_family_find_byid(family->id)) {
-               err = -EEXIST;
-               goto errout_locked;
-       }
-
        if (family->id == GENL_ID_GENERATE) {
                u16 newid = genl_generate_id();
 
@@ -388,6 +383,9 @@ int genl_register_family(struct genl_family *family)
                }
 
                family->id = newid;
+       } else if (genl_family_find_byid(family->id)) {
+               err = -EEXIST;
+               goto errout_locked;
        }
 
        if (family->maxattr) {