Commit 188c517a authored by Lin Ming's avatar Lin Ming Committed by David S. Miller

ipv6: return errno pointers consistently for fib6_add_1()

fib6_add_1() should consistently return errno pointers,
rather than a mixture of NULL and errno pointers.
Signed-off-by: default avatarLin Ming <mlin@ss.pku.edu.cn>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 24cad1b4
......@@ -514,7 +514,7 @@ static struct fib6_node * fib6_add_1(struct fib6_node *root, void *addr,
ln = node_alloc();
if (!ln)
return NULL;
return ERR_PTR(-ENOMEM);
ln->fn_bit = plen;
ln->parent = pn;
......@@ -561,7 +561,7 @@ static struct fib6_node * fib6_add_1(struct fib6_node *root, void *addr,
node_free(in);
if (ln)
node_free(ln);
return NULL;
return ERR_PTR(-ENOMEM);
}
/*
......@@ -611,7 +611,7 @@ static struct fib6_node * fib6_add_1(struct fib6_node *root, void *addr,
ln = node_alloc();
if (!ln)
return NULL;
return ERR_PTR(-ENOMEM);
ln->fn_bit = plen;
......@@ -777,11 +777,8 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt, struct nl_info *info)
if (IS_ERR(fn)) {
err = PTR_ERR(fn);
fn = NULL;
}
if (!fn)
goto out;
}
pn = fn;
......@@ -820,15 +817,12 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt, struct nl_info *info)
allow_create, replace_required);
if (IS_ERR(sn)) {
err = PTR_ERR(sn);
sn = NULL;
}
if (!sn) {
/* If it is failed, discard just allocated
root, and then (in st_failure) stale node
in main tree.
*/
node_free(sfn);
err = PTR_ERR(sn);
goto st_failure;
}
......@@ -843,10 +837,8 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt, struct nl_info *info)
if (IS_ERR(sn)) {
err = PTR_ERR(sn);
sn = NULL;
}
if (!sn)
goto st_failure;
}
}
if (!fn->leaf) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment