diff options
Diffstat (limited to 'net/decnet')
-rw-r--r-- | net/decnet/dn_dev.c | 14 | ||||
-rw-r--r-- | net/decnet/dn_table.c | 11 |
2 files changed, 16 insertions, 9 deletions
diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c index ed083ab455b7..90b3dfd72b49 100644 --- a/net/decnet/dn_dev.c +++ b/net/decnet/dn_dev.c | |||
@@ -749,7 +749,7 @@ static int dn_nl_fill_ifaddr(struct sk_buff *skb, struct dn_ifaddr *ifa, | |||
749 | 749 | ||
750 | nlh = nlmsg_put(skb, pid, seq, event, sizeof(*ifm), flags); | 750 | nlh = nlmsg_put(skb, pid, seq, event, sizeof(*ifm), flags); |
751 | if (nlh == NULL) | 751 | if (nlh == NULL) |
752 | return -ENOBUFS; | 752 | return -EMSGSIZE; |
753 | 753 | ||
754 | ifm = nlmsg_data(nlh); | 754 | ifm = nlmsg_data(nlh); |
755 | ifm->ifa_family = AF_DECnet; | 755 | ifm->ifa_family = AF_DECnet; |
@@ -768,7 +768,8 @@ static int dn_nl_fill_ifaddr(struct sk_buff *skb, struct dn_ifaddr *ifa, | |||
768 | return nlmsg_end(skb, nlh); | 768 | return nlmsg_end(skb, nlh); |
769 | 769 | ||
770 | nla_put_failure: | 770 | nla_put_failure: |
771 | return nlmsg_cancel(skb, nlh); | 771 | nlmsg_cancel(skb, nlh); |
772 | return -EMSGSIZE; | ||
772 | } | 773 | } |
773 | 774 | ||
774 | static void dn_ifaddr_notify(int event, struct dn_ifaddr *ifa) | 775 | static void dn_ifaddr_notify(int event, struct dn_ifaddr *ifa) |
@@ -781,9 +782,12 @@ static void dn_ifaddr_notify(int event, struct dn_ifaddr *ifa) | |||
781 | goto errout; | 782 | goto errout; |
782 | 783 | ||
783 | err = dn_nl_fill_ifaddr(skb, ifa, 0, 0, event, 0); | 784 | err = dn_nl_fill_ifaddr(skb, ifa, 0, 0, event, 0); |
784 | /* failure implies BUG in dn_ifaddr_nlmsg_size() */ | 785 | if (err < 0) { |
785 | BUG_ON(err < 0); | 786 | /* -EMSGSIZE implies BUG in dn_ifaddr_nlmsg_size() */ |
786 | 787 | WARN_ON(err == -EMSGSIZE); | |
788 | kfree_skb(skb); | ||
789 | goto errout; | ||
790 | } | ||
787 | err = rtnl_notify(skb, 0, RTNLGRP_DECnet_IFADDR, NULL, GFP_KERNEL); | 791 | err = rtnl_notify(skb, 0, RTNLGRP_DECnet_IFADDR, NULL, GFP_KERNEL); |
788 | errout: | 792 | errout: |
789 | if (err < 0) | 793 | if (err < 0) |
diff --git a/net/decnet/dn_table.c b/net/decnet/dn_table.c index 13b2421991ba..c1f0cc1b1c60 100644 --- a/net/decnet/dn_table.c +++ b/net/decnet/dn_table.c | |||
@@ -350,7 +350,7 @@ static int dn_fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event, | |||
350 | nlmsg_failure: | 350 | nlmsg_failure: |
351 | rtattr_failure: | 351 | rtattr_failure: |
352 | skb_trim(skb, b - skb->data); | 352 | skb_trim(skb, b - skb->data); |
353 | return -1; | 353 | return -EMSGSIZE; |
354 | } | 354 | } |
355 | 355 | ||
356 | 356 | ||
@@ -368,9 +368,12 @@ static void dn_rtmsg_fib(int event, struct dn_fib_node *f, int z, u32 tb_id, | |||
368 | err = dn_fib_dump_info(skb, pid, nlh->nlmsg_seq, event, tb_id, | 368 | err = dn_fib_dump_info(skb, pid, nlh->nlmsg_seq, event, tb_id, |
369 | f->fn_type, f->fn_scope, &f->fn_key, z, | 369 | f->fn_type, f->fn_scope, &f->fn_key, z, |
370 | DN_FIB_INFO(f), 0); | 370 | DN_FIB_INFO(f), 0); |
371 | /* failure implies BUG in dn_fib_nlmsg_size() */ | 371 | if (err < 0) { |
372 | BUG_ON(err < 0); | 372 | /* -EMSGSIZE implies BUG in dn_fib_nlmsg_size() */ |
373 | 373 | WARN_ON(err == -EMSGSIZE); | |
374 | kfree_skb(skb); | ||
375 | goto errout; | ||
376 | } | ||
374 | err = rtnl_notify(skb, pid, RTNLGRP_DECnet_ROUTE, nlh, GFP_KERNEL); | 377 | err = rtnl_notify(skb, pid, RTNLGRP_DECnet_ROUTE, nlh, GFP_KERNEL); |
375 | errout: | 378 | errout: |
376 | if (err < 0) | 379 | if (err < 0) |