Loading include/net/fib_rules.h +1 −1 Original line number Diff line number Diff line Loading @@ -102,7 +102,7 @@ static inline u32 frh_get_table(struct fib_rule_hdr *frh, struct nlattr **nla) } extern int fib_rules_register(struct net *, struct fib_rules_ops *); extern int fib_rules_unregister(struct net *, struct fib_rules_ops *); extern void fib_rules_unregister(struct net *, struct fib_rules_ops *); extern void fib_rules_cleanup_ops(struct fib_rules_ops *); extern int fib_rules_lookup(struct fib_rules_ops *, Loading net/core/fib_rules.c +4 −17 Original line number Diff line number Diff line Loading @@ -112,29 +112,16 @@ void fib_rules_cleanup_ops(struct fib_rules_ops *ops) } EXPORT_SYMBOL_GPL(fib_rules_cleanup_ops); int fib_rules_unregister(struct net *net, struct fib_rules_ops *ops) void fib_rules_unregister(struct net *net, struct fib_rules_ops *ops) { int err = 0; struct fib_rules_ops *o; spin_lock(&net->rules_mod_lock); list_for_each_entry(o, &net->rules_ops, list) { if (o == ops) { list_del_rcu(&o->list); list_del_rcu(&ops->list); fib_rules_cleanup_ops(ops); goto out; } } err = -ENOENT; out: spin_unlock(&net->rules_mod_lock); synchronize_rcu(); if (!err) release_net(net); return err; } EXPORT_SYMBOL_GPL(fib_rules_unregister); Loading Loading
include/net/fib_rules.h +1 −1 Original line number Diff line number Diff line Loading @@ -102,7 +102,7 @@ static inline u32 frh_get_table(struct fib_rule_hdr *frh, struct nlattr **nla) } extern int fib_rules_register(struct net *, struct fib_rules_ops *); extern int fib_rules_unregister(struct net *, struct fib_rules_ops *); extern void fib_rules_unregister(struct net *, struct fib_rules_ops *); extern void fib_rules_cleanup_ops(struct fib_rules_ops *); extern int fib_rules_lookup(struct fib_rules_ops *, Loading
net/core/fib_rules.c +4 −17 Original line number Diff line number Diff line Loading @@ -112,29 +112,16 @@ void fib_rules_cleanup_ops(struct fib_rules_ops *ops) } EXPORT_SYMBOL_GPL(fib_rules_cleanup_ops); int fib_rules_unregister(struct net *net, struct fib_rules_ops *ops) void fib_rules_unregister(struct net *net, struct fib_rules_ops *ops) { int err = 0; struct fib_rules_ops *o; spin_lock(&net->rules_mod_lock); list_for_each_entry(o, &net->rules_ops, list) { if (o == ops) { list_del_rcu(&o->list); list_del_rcu(&ops->list); fib_rules_cleanup_ops(ops); goto out; } } err = -ENOENT; out: spin_unlock(&net->rules_mod_lock); synchronize_rcu(); if (!err) release_net(net); return err; } EXPORT_SYMBOL_GPL(fib_rules_unregister); Loading