diff options
author | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2014-12-10 07:31:43 +0100 |
---|---|---|
committer | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2014-12-10 07:31:43 +0100 |
commit | 17f7f59cd6c5c1f120bf5586b8f4e025fb45a76e (patch) | |
tree | fd9f0b95e780fc7de843e8bf8f775c185017d293 | |
parent | cb2076b40b68e46a5585d114c325ffe267a000b2 (diff) |
Call synchronize_rcu() in set type (un)register functions only when needed
-rw-r--r-- | kernel/net/netfilter/ipset/ip_set_core.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/net/netfilter/ipset/ip_set_core.c b/kernel/net/netfilter/ipset/ip_set_core.c index 6043a10..436bfd1 100644 --- a/kernel/net/netfilter/ipset/ip_set_core.c +++ b/kernel/net/netfilter/ipset/ip_set_core.c @@ -214,14 +214,13 @@ ip_set_type_register(struct ip_set_type *type) pr_warn("ip_set type %s, family %s with revision min %u already registered!\n", type->name, family_name(type->family), type->revision_min); - ret = -EINVAL; - goto unlock; + ip_set_type_unlock(); + return -EINVAL; } list_add_rcu(&type->list, &ip_set_type_list); pr_debug("type %s, family %s, revision %u:%u registered.\n", type->name, family_name(type->family), type->revision_min, type->revision_max); -unlock: ip_set_type_unlock(); synchronize_rcu(); return ret; @@ -237,12 +236,12 @@ ip_set_type_unregister(struct ip_set_type *type) pr_warn("ip_set type %s, family %s with revision min %u not registered\n", type->name, family_name(type->family), type->revision_min); - goto unlock; + ip_set_type_unlock(); + return; } list_del_rcu(&type->list); pr_debug("type %s, family %s with revision min %u unregistered.\n", type->name, family_name(type->family), type->revision_min); -unlock: ip_set_type_unlock(); synchronize_rcu(); |