diff options
author | Jamal Hadi Salim <hadi@cyberus.ca> | 2005-06-19 01:55:51 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-06-19 01:55:51 -0400 |
commit | 9ed19f339e12e731986de84134ac293cd15910a7 (patch) | |
tree | 6a39cb14e7b51dcc3d1f31b0cf30801f27da9618 | |
parent | e431b8c004af6be03783dddea31b6e514118051d (diff) |
[NETLINK]: Set correct pid for ioctl originating netlink events
This patch ensures that netlink events created as a result of programns
using ioctls (such as ifconfig, route etc) contains the correct PID of
those events.
Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/rtnetlink.c | 2 | ||||
-rw-r--r-- | net/ipv4/devinet.c | 2 | ||||
-rw-r--r-- | net/ipv4/fib_semantics.c | 4 | ||||
-rw-r--r-- | net/ipv6/addrconf.c | 6 |
4 files changed, 7 insertions, 7 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 63bd88665182..e013d836a7ab 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -452,7 +452,7 @@ void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change) | |||
452 | if (!skb) | 452 | if (!skb) |
453 | return; | 453 | return; |
454 | 454 | ||
455 | if (rtnetlink_fill_ifinfo(skb, dev, type, 0, 0, change, 0) < 0) { | 455 | if (rtnetlink_fill_ifinfo(skb, dev, type, current->pid, 0, change, 0) < 0) { |
456 | kfree_skb(skb); | 456 | kfree_skb(skb); |
457 | return; | 457 | return; |
458 | } | 458 | } |
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index fd47a1e890fa..650dcb12d9a1 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -1112,7 +1112,7 @@ static void rtmsg_ifa(int event, struct in_ifaddr* ifa) | |||
1112 | 1112 | ||
1113 | if (!skb) | 1113 | if (!skb) |
1114 | netlink_set_err(rtnl, 0, RTMGRP_IPV4_IFADDR, ENOBUFS); | 1114 | netlink_set_err(rtnl, 0, RTMGRP_IPV4_IFADDR, ENOBUFS); |
1115 | else if (inet_fill_ifaddr(skb, ifa, 0, 0, event, 0) < 0) { | 1115 | else if (inet_fill_ifaddr(skb, ifa, current->pid, 0, event, 0) < 0) { |
1116 | kfree_skb(skb); | 1116 | kfree_skb(skb); |
1117 | netlink_set_err(rtnl, 0, RTMGRP_IPV4_IFADDR, EINVAL); | 1117 | netlink_set_err(rtnl, 0, RTMGRP_IPV4_IFADDR, EINVAL); |
1118 | } else { | 1118 | } else { |
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index a9a44b4bef46..c886b28ba9f5 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c | |||
@@ -276,7 +276,7 @@ void rtmsg_fib(int event, u32 key, struct fib_alias *fa, | |||
276 | struct nlmsghdr *n, struct netlink_skb_parms *req) | 276 | struct nlmsghdr *n, struct netlink_skb_parms *req) |
277 | { | 277 | { |
278 | struct sk_buff *skb; | 278 | struct sk_buff *skb; |
279 | u32 pid = req ? req->pid : 0; | 279 | u32 pid = req ? req->pid : n->nlmsg_pid; |
280 | int size = NLMSG_SPACE(sizeof(struct rtmsg)+256); | 280 | int size = NLMSG_SPACE(sizeof(struct rtmsg)+256); |
281 | 281 | ||
282 | skb = alloc_skb(size, GFP_KERNEL); | 282 | skb = alloc_skb(size, GFP_KERNEL); |
@@ -1035,7 +1035,7 @@ fib_convert_rtentry(int cmd, struct nlmsghdr *nl, struct rtmsg *rtm, | |||
1035 | } | 1035 | } |
1036 | 1036 | ||
1037 | nl->nlmsg_flags = NLM_F_REQUEST; | 1037 | nl->nlmsg_flags = NLM_F_REQUEST; |
1038 | nl->nlmsg_pid = 0; | 1038 | nl->nlmsg_pid = current->pid; |
1039 | nl->nlmsg_seq = 0; | 1039 | nl->nlmsg_seq = 0; |
1040 | nl->nlmsg_len = NLMSG_LENGTH(sizeof(*rtm)); | 1040 | nl->nlmsg_len = NLMSG_LENGTH(sizeof(*rtm)); |
1041 | if (cmd == SIOCDELRT) { | 1041 | if (cmd == SIOCDELRT) { |
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 4d4cb46f0439..47a30c3188ea 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -2873,7 +2873,7 @@ static void inet6_ifa_notify(int event, struct inet6_ifaddr *ifa) | |||
2873 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFADDR, ENOBUFS); | 2873 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFADDR, ENOBUFS); |
2874 | return; | 2874 | return; |
2875 | } | 2875 | } |
2876 | if (inet6_fill_ifaddr(skb, ifa, 0, 0, event, 0) < 0) { | 2876 | if (inet6_fill_ifaddr(skb, ifa, current->pid, 0, event, 0) < 0) { |
2877 | kfree_skb(skb); | 2877 | kfree_skb(skb); |
2878 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFADDR, EINVAL); | 2878 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFADDR, EINVAL); |
2879 | return; | 2879 | return; |
@@ -3008,7 +3008,7 @@ void inet6_ifinfo_notify(int event, struct inet6_dev *idev) | |||
3008 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFINFO, ENOBUFS); | 3008 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFINFO, ENOBUFS); |
3009 | return; | 3009 | return; |
3010 | } | 3010 | } |
3011 | if (inet6_fill_ifinfo(skb, idev, 0, 0, event, 0) < 0) { | 3011 | if (inet6_fill_ifinfo(skb, idev, current->pid, 0, event, 0) < 0) { |
3012 | kfree_skb(skb); | 3012 | kfree_skb(skb); |
3013 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFINFO, EINVAL); | 3013 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_IFINFO, EINVAL); |
3014 | return; | 3014 | return; |
@@ -3065,7 +3065,7 @@ static void inet6_prefix_notify(int event, struct inet6_dev *idev, | |||
3065 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_PREFIX, ENOBUFS); | 3065 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_PREFIX, ENOBUFS); |
3066 | return; | 3066 | return; |
3067 | } | 3067 | } |
3068 | if (inet6_fill_prefix(skb, idev, pinfo, 0, 0, event, 0) < 0) { | 3068 | if (inet6_fill_prefix(skb, idev, pinfo, current->pid, 0, event, 0) < 0) { |
3069 | kfree_skb(skb); | 3069 | kfree_skb(skb); |
3070 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_PREFIX, EINVAL); | 3070 | netlink_set_err(rtnl, 0, RTMGRP_IPV6_PREFIX, EINVAL); |
3071 | return; | 3071 | return; |