diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-09 11:01:37 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-09 11:01:37 -0500 |
commit | f049274b012fd3b50113f194bfbbcbc3143d0da3 (patch) | |
tree | 15ef947c1959da3196d8dbc524b435972f6d37f7 /net/ipv4/devinet.c | |
parent | b37df85960a34dd96d0a4695c650f7972ef56c30 (diff) | |
parent | 1539b98b561754252dd520b98fa03a688a4f81b5 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (79 commits)
[IPX]: Fix NULL pointer dereference on ipx unload
[ATM]: atmarp.h needs to always include linux/types.h
[NET]: Fix net/socket.c warnings.
[NET]: cleanup sock_from_file()
[NET]: change layout of ehash table
[S390]: Add AF_IUCV socket support
[S390]: Adapt special message interface to new IUCV API
[S390]: Adapt netiucv driver to new IUCV API
[S390]: Adapt vmlogrdr driver to new IUCV API
[S390]: Adapt monreader driver to new IUCV API
[S390]: Rewrite of the IUCV base code, part 2
[S390]: Rewrite of the IUCV base code, part 1
[X.25]: Adds /proc/net/x25/forward to view active forwarded calls.
[X.25]: Adds /proc/sys/net/x25/x25_forward to control forwarding.
[X.25]: Add call forwarding
[XFRM]: xfrm_migrate() needs exporting to modules.
[PFKEYV2]: CONFIG_NET_KEY_MIGRATE option
[PFKEYV2]: Extension for dynamic update of endpoint address(es)
[XFRM]: CONFIG_XFRM_MIGRATE option
[XFRM]: User interface for handling XFRM_MSG_MIGRATE
...
Diffstat (limited to 'net/ipv4/devinet.c')
-rw-r--r-- | net/ipv4/devinet.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 480ace9819f6..c40203640966 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -1140,7 +1140,7 @@ static int inet_fill_ifaddr(struct sk_buff *skb, struct in_ifaddr *ifa, | |||
1140 | 1140 | ||
1141 | nlh = nlmsg_put(skb, pid, seq, event, sizeof(*ifm), flags); | 1141 | nlh = nlmsg_put(skb, pid, seq, event, sizeof(*ifm), flags); |
1142 | if (nlh == NULL) | 1142 | if (nlh == NULL) |
1143 | return -ENOBUFS; | 1143 | return -EMSGSIZE; |
1144 | 1144 | ||
1145 | ifm = nlmsg_data(nlh); | 1145 | ifm = nlmsg_data(nlh); |
1146 | ifm->ifa_family = AF_INET; | 1146 | ifm->ifa_family = AF_INET; |
@@ -1167,7 +1167,8 @@ static int inet_fill_ifaddr(struct sk_buff *skb, struct in_ifaddr *ifa, | |||
1167 | return nlmsg_end(skb, nlh); | 1167 | return nlmsg_end(skb, nlh); |
1168 | 1168 | ||
1169 | nla_put_failure: | 1169 | nla_put_failure: |
1170 | return nlmsg_cancel(skb, nlh); | 1170 | nlmsg_cancel(skb, nlh); |
1171 | return -EMSGSIZE; | ||
1171 | } | 1172 | } |
1172 | 1173 | ||
1173 | static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) | 1174 | static int inet_dump_ifaddr(struct sk_buff *skb, struct netlink_callback *cb) |
@@ -1225,9 +1226,12 @@ static void rtmsg_ifa(int event, struct in_ifaddr* ifa, struct nlmsghdr *nlh, | |||
1225 | goto errout; | 1226 | goto errout; |
1226 | 1227 | ||
1227 | err = inet_fill_ifaddr(skb, ifa, pid, seq, event, 0); | 1228 | err = inet_fill_ifaddr(skb, ifa, pid, seq, event, 0); |
1228 | /* failure implies BUG in inet_nlmsg_size() */ | 1229 | if (err < 0) { |
1229 | BUG_ON(err < 0); | 1230 | /* -EMSGSIZE implies BUG in inet_nlmsg_size() */ |
1230 | 1231 | WARN_ON(err == -EMSGSIZE); | |
1232 | kfree_skb(skb); | ||
1233 | goto errout; | ||
1234 | } | ||
1231 | err = rtnl_notify(skb, pid, RTNLGRP_IPV4_IFADDR, nlh, GFP_KERNEL); | 1235 | err = rtnl_notify(skb, pid, RTNLGRP_IPV4_IFADDR, nlh, GFP_KERNEL); |
1232 | errout: | 1236 | errout: |
1233 | if (err < 0) | 1237 | if (err < 0) |