Skip to content

Commit

Permalink
[IPV6]: Make xfrm6_init to return an error code.
Browse files Browse the repository at this point in the history
The xfrm initialization function does not return any error code, so if
there is an error, the caller can not be advise of that.  This patch
checks the return code of the different called functions in order to
return a successful or failed initialization.

Signed-off-by: Daniel Lezcano <[email protected]>
Acked-by: Benjamin Thery <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Daniel Lezcano authored and davem330 committed Jan 28, 2008
1 parent d63bddb commit 0013cab
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
4 changes: 2 additions & 2 deletions include/net/xfrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -1066,11 +1066,11 @@ struct xfrm6_tunnel {

extern void xfrm_init(void);
extern void xfrm4_init(void);
extern void xfrm6_init(void);
extern int xfrm6_init(void);
extern void xfrm6_fini(void);
extern void xfrm_state_init(void);
extern void xfrm4_state_init(void);
extern void xfrm6_state_init(void);
extern int xfrm6_state_init(void);
extern void xfrm6_state_fini(void);

extern int xfrm_state_walk(u8 proto, int (*func)(struct xfrm_state *, int, void*), void *);
Expand Down
22 changes: 17 additions & 5 deletions net/ipv6/xfrm6_policy.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,20 +269,32 @@ static struct xfrm_policy_afinfo xfrm6_policy_afinfo = {
.fill_dst = xfrm6_fill_dst,
};

static void __init xfrm6_policy_init(void)
static int __init xfrm6_policy_init(void)
{
xfrm_policy_register_afinfo(&xfrm6_policy_afinfo);
return xfrm_policy_register_afinfo(&xfrm6_policy_afinfo);
}

static void xfrm6_policy_fini(void)
{
xfrm_policy_unregister_afinfo(&xfrm6_policy_afinfo);
}

void __init xfrm6_init(void)
int __init xfrm6_init(void)
{
xfrm6_policy_init();
xfrm6_state_init();
int ret;

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

ret = xfrm6_state_init();
if (ret)
goto out_policy;
out:
return ret;
out_policy:
xfrm6_policy_fini();
goto out;
}

void xfrm6_fini(void)
Expand Down
4 changes: 2 additions & 2 deletions net/ipv6/xfrm6_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,9 @@ static struct xfrm_state_afinfo xfrm6_state_afinfo = {
.transport_finish = xfrm6_transport_finish,
};

void __init xfrm6_state_init(void)
int __init xfrm6_state_init(void)
{
xfrm_state_register_afinfo(&xfrm6_state_afinfo);
return xfrm_state_register_afinfo(&xfrm6_state_afinfo);
}

void xfrm6_state_fini(void)
Expand Down

0 comments on commit 0013cab

Please sign in to comment.