Skip to content

Commit

Permalink
[IPV6]: Make fib6_rules_init to return an error code.
Browse files Browse the repository at this point in the history
When the fib_rules initialization finished, no return code is provided
so there is no way to know, for the caller, if the initialization has
been successful or has failed. This patch fix that.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Acked-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Daniel Lezcano authored and David S. Miller committed Jan 28, 2008
1 parent 0013cab commit 9eb87f3
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 6 deletions.
1 change: 1 addition & 0 deletions include/net/fib_rules.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ static inline u32 frh_get_table(struct fib_rule_hdr *frh, struct nlattr **nla)

extern int fib_rules_register(struct fib_rules_ops *);
extern int fib_rules_unregister(struct fib_rules_ops *);
extern void fib_rules_cleanup_ops(struct fib_rules_ops *);

extern int fib_rules_lookup(struct fib_rules_ops *,
struct flowi *, int flags,
Expand Down
2 changes: 1 addition & 1 deletion include/net/ip6_fib.h
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ extern void fib6_gc_cleanup(void);

extern int fib6_init(void);

extern void fib6_rules_init(void);
extern int fib6_rules_init(void);
extern void fib6_rules_cleanup(void);

#endif
Expand Down
5 changes: 3 additions & 2 deletions net/core/fib_rules.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ int fib_rules_register(struct fib_rules_ops *ops)

EXPORT_SYMBOL_GPL(fib_rules_register);

static void cleanup_ops(struct fib_rules_ops *ops)
void fib_rules_cleanup_ops(struct fib_rules_ops *ops)
{
struct fib_rule *rule, *tmp;

Expand All @@ -111,6 +111,7 @@ static void cleanup_ops(struct fib_rules_ops *ops)
fib_rule_put(rule);
}
}
EXPORT_SYMBOL_GPL(fib_rules_cleanup_ops);

int fib_rules_unregister(struct fib_rules_ops *ops)
{
Expand All @@ -121,7 +122,7 @@ int fib_rules_unregister(struct fib_rules_ops *ops)
list_for_each_entry(o, &rules_ops, list) {
if (o == ops) {
list_del_rcu(&o->list);
cleanup_ops(ops);
fib_rules_cleanup_ops(ops);
goto out;
}
}
Expand Down
19 changes: 16 additions & 3 deletions net/ipv6/fib6_rules.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,10 +265,23 @@ static int __init fib6_default_rules_init(void)
return 0;
}

void __init fib6_rules_init(void)
int __init fib6_rules_init(void)
{
BUG_ON(fib6_default_rules_init());
fib_rules_register(&fib6_rules_ops);
int ret;

ret = fib6_default_rules_init();
if (ret)
goto out;

ret = fib_rules_register(&fib6_rules_ops);
if (ret)
goto out_default_rules_init;
out:
return ret;

out_default_rules_init:
fib_rules_cleanup_ops(&fib6_rules_ops);
goto out;
}

void fib6_rules_cleanup(void)
Expand Down

0 comments on commit 9eb87f3

Please sign in to comment.