Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9eb87f3f authored by Daniel Lezcano's avatar Daniel Lezcano Committed by David S. Miller
Browse files

[IPV6]: Make fib6_rules_init to return an error code.



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: default avatarDaniel Lezcano <dlezcano@fr.ibm.com>
Acked-by: default avatarBenjamin Thery <benjamin.thery@bull.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0013caba
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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
+3 −2
Original line number Diff line number Diff line
@@ -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;

@@ -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)
{
@@ -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;
		}
	}
+16 −3
Original line number Diff line number Diff line
@@ -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)