diff options
Diffstat (limited to 'net/ipv4/fib_semantics.c')
-rw-r--r-- | net/ipv4/fib_semantics.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index e63b8a98fb4d..be1028c9933e 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c | |||
@@ -314,9 +314,12 @@ void rtmsg_fib(int event, __be32 key, struct fib_alias *fa, | |||
314 | err = fib_dump_info(skb, info->pid, seq, event, tb_id, | 314 | err = fib_dump_info(skb, info->pid, seq, event, tb_id, |
315 | fa->fa_type, fa->fa_scope, key, dst_len, | 315 | fa->fa_type, fa->fa_scope, key, dst_len, |
316 | fa->fa_tos, fa->fa_info, 0); | 316 | fa->fa_tos, fa->fa_info, 0); |
317 | /* failure implies BUG in fib_nlmsg_size() */ | 317 | if (err < 0) { |
318 | BUG_ON(err < 0); | 318 | /* -EMSGSIZE implies BUG in fib_nlmsg_size() */ |
319 | 319 | WARN_ON(err == -EMSGSIZE); | |
320 | kfree_skb(skb); | ||
321 | goto errout; | ||
322 | } | ||
320 | err = rtnl_notify(skb, info->pid, RTNLGRP_IPV4_ROUTE, | 323 | err = rtnl_notify(skb, info->pid, RTNLGRP_IPV4_ROUTE, |
321 | info->nlh, GFP_KERNEL); | 324 | info->nlh, GFP_KERNEL); |
322 | errout: | 325 | errout: |
@@ -960,7 +963,7 @@ int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event, | |||
960 | 963 | ||
961 | nlh = nlmsg_put(skb, pid, seq, event, sizeof(*rtm), flags); | 964 | nlh = nlmsg_put(skb, pid, seq, event, sizeof(*rtm), flags); |
962 | if (nlh == NULL) | 965 | if (nlh == NULL) |
963 | return -ENOBUFS; | 966 | return -EMSGSIZE; |
964 | 967 | ||
965 | rtm = nlmsg_data(nlh); | 968 | rtm = nlmsg_data(nlh); |
966 | rtm->rtm_family = AF_INET; | 969 | rtm->rtm_family = AF_INET; |
@@ -1031,7 +1034,8 @@ int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event, | |||
1031 | return nlmsg_end(skb, nlh); | 1034 | return nlmsg_end(skb, nlh); |
1032 | 1035 | ||
1033 | nla_put_failure: | 1036 | nla_put_failure: |
1034 | return nlmsg_cancel(skb, nlh); | 1037 | nlmsg_cancel(skb, nlh); |
1038 | return -EMSGSIZE; | ||
1035 | } | 1039 | } |
1036 | 1040 | ||
1037 | /* | 1041 | /* |