Loading net/ipv6/ip6_fib.c +2 −1 Original line number Diff line number Diff line Loading @@ -1315,6 +1315,7 @@ static int fib6_walk(struct fib6_walker_t *w) static int fib6_clean_node(struct fib6_walker_t *w) { struct nl_info info = {}; int res; struct rt6_info *rt; struct fib6_cleaner_t *c = container_of(w, struct fib6_cleaner_t, w); Loading @@ -1323,7 +1324,7 @@ static int fib6_clean_node(struct fib6_walker_t *w) res = c->func(rt, c->arg); if (res < 0) { w->leaf = rt; res = fib6_del(rt, NULL); res = fib6_del(rt, &info); if (res) { #if RT6_DEBUG >= 2 printk(KERN_DEBUG "fib6_clean_node: del failed: rt=%p@%p err=%d\n", rt, rt->rt6i_node, res); Loading net/ipv6/route.c +13 −14 Original line number Diff line number Diff line Loading @@ -609,7 +609,8 @@ static int __ip6_ins_rt(struct rt6_info *rt, struct nl_info *info) int ip6_ins_rt(struct rt6_info *rt) { return __ip6_ins_rt(rt, NULL); struct nl_info info = {}; return __ip6_ins_rt(rt, &info); } static struct rt6_info *rt6_alloc_cow(struct rt6_info *ort, struct in6_addr *daddr, Loading Loading @@ -1266,7 +1267,8 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info) int ip6_del_rt(struct rt6_info *rt) { return __ip6_del_rt(rt, NULL); struct nl_info info = {}; return __ip6_del_rt(rt, &info); } static int ip6_route_del(struct fib6_config *cfg) Loading Loading @@ -2243,29 +2245,26 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void void inet6_rt_notify(int event, struct rt6_info *rt, struct nl_info *info) { struct sk_buff *skb; u32 pid = 0, seq = 0; struct nlmsghdr *nlh = NULL; int err = -ENOBUFS; u32 seq; int err; if (info) { pid = info->pid; nlh = info->nlh; if (nlh) seq = nlh->nlmsg_seq; } err = -ENOBUFS; seq = info->nlh != NULL ? info->nlh->nlmsg_seq : 0; skb = nlmsg_new(rt6_nlmsg_size(), gfp_any()); if (skb == NULL) goto errout; err = rt6_fill_node(skb, rt, NULL, NULL, 0, event, pid, seq, 0, 0); err = rt6_fill_node(skb, rt, NULL, NULL, 0, event, info->pid, seq, 0, 0); if (err < 0) { /* -EMSGSIZE implies BUG in rt6_nlmsg_size() */ WARN_ON(err == -EMSGSIZE); kfree_skb(skb); goto errout; } err = rtnl_notify(skb, &init_net, pid, RTNLGRP_IPV6_ROUTE, nlh, gfp_any()); err = rtnl_notify(skb, &init_net, info->pid, RTNLGRP_IPV6_ROUTE, info->nlh, gfp_any()); errout: if (err < 0) rtnl_set_sk_err(&init_net, RTNLGRP_IPV6_ROUTE, err); Loading Loading
net/ipv6/ip6_fib.c +2 −1 Original line number Diff line number Diff line Loading @@ -1315,6 +1315,7 @@ static int fib6_walk(struct fib6_walker_t *w) static int fib6_clean_node(struct fib6_walker_t *w) { struct nl_info info = {}; int res; struct rt6_info *rt; struct fib6_cleaner_t *c = container_of(w, struct fib6_cleaner_t, w); Loading @@ -1323,7 +1324,7 @@ static int fib6_clean_node(struct fib6_walker_t *w) res = c->func(rt, c->arg); if (res < 0) { w->leaf = rt; res = fib6_del(rt, NULL); res = fib6_del(rt, &info); if (res) { #if RT6_DEBUG >= 2 printk(KERN_DEBUG "fib6_clean_node: del failed: rt=%p@%p err=%d\n", rt, rt->rt6i_node, res); Loading
net/ipv6/route.c +13 −14 Original line number Diff line number Diff line Loading @@ -609,7 +609,8 @@ static int __ip6_ins_rt(struct rt6_info *rt, struct nl_info *info) int ip6_ins_rt(struct rt6_info *rt) { return __ip6_ins_rt(rt, NULL); struct nl_info info = {}; return __ip6_ins_rt(rt, &info); } static struct rt6_info *rt6_alloc_cow(struct rt6_info *ort, struct in6_addr *daddr, Loading Loading @@ -1266,7 +1267,8 @@ static int __ip6_del_rt(struct rt6_info *rt, struct nl_info *info) int ip6_del_rt(struct rt6_info *rt) { return __ip6_del_rt(rt, NULL); struct nl_info info = {}; return __ip6_del_rt(rt, &info); } static int ip6_route_del(struct fib6_config *cfg) Loading Loading @@ -2243,29 +2245,26 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr* nlh, void void inet6_rt_notify(int event, struct rt6_info *rt, struct nl_info *info) { struct sk_buff *skb; u32 pid = 0, seq = 0; struct nlmsghdr *nlh = NULL; int err = -ENOBUFS; u32 seq; int err; if (info) { pid = info->pid; nlh = info->nlh; if (nlh) seq = nlh->nlmsg_seq; } err = -ENOBUFS; seq = info->nlh != NULL ? info->nlh->nlmsg_seq : 0; skb = nlmsg_new(rt6_nlmsg_size(), gfp_any()); if (skb == NULL) goto errout; err = rt6_fill_node(skb, rt, NULL, NULL, 0, event, pid, seq, 0, 0); err = rt6_fill_node(skb, rt, NULL, NULL, 0, event, info->pid, seq, 0, 0); if (err < 0) { /* -EMSGSIZE implies BUG in rt6_nlmsg_size() */ WARN_ON(err == -EMSGSIZE); kfree_skb(skb); goto errout; } err = rtnl_notify(skb, &init_net, pid, RTNLGRP_IPV6_ROUTE, nlh, gfp_any()); err = rtnl_notify(skb, &init_net, info->pid, RTNLGRP_IPV6_ROUTE, info->nlh, gfp_any()); errout: if (err < 0) rtnl_set_sk_err(&init_net, RTNLGRP_IPV6_ROUTE, err); Loading