summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2005-08-15 06:25:47 +0400
committerDavid S. Miller <davem@sunset.davemloft.net>2005-08-30 03:00:34 +0400
commit43e943c32b9213b5d25407b281c94aaa474fd9a6 (patch)
tree7844a1aa95d697ae378bc799085e1b29eb0b8a48
parentad93e266a17c6f606e96304c866eb73665ae34fa (diff)
downloadlinux-43e943c32b9213b5d25407b281c94aaa474fd9a6.tar.xz
[NETLINK]: Fix missing dst_groups initializations in netlink_broadcast users
netlink_broadcast users must initialize NETLINK_CB(skb).dst_groups to the destination group mask for netlink_recvmsg. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--lib/kobject_uevent.c1
-rw-r--r--net/xfrm/xfrm_user.c8
-rw-r--r--security/selinux/netlink.c1
3 files changed, 10 insertions, 0 deletions
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
index 88f4d746aa05..bc000619f4f8 100644
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -93,6 +93,7 @@ static int send_uevent(const char *signal, const char *obj,
}
}
+ NETLINK_CB(skb).dst_groups = 1;
return netlink_broadcast(uevent_sock, skb, 0, 1, gfp_mask);
}
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 33ceeea783b1..4d553a1d2169 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -1152,6 +1152,8 @@ static int xfrm_notify_sa_flush(struct km_event *c)
nlh->nlmsg_len = skb->tail - b;
+ NETLINK_CB(skb).dst_groups = XFRMGRP_SA;
+
return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_SA, GFP_ATOMIC);
nlmsg_failure:
@@ -1226,6 +1228,8 @@ static int xfrm_notify_sa(struct xfrm_state *x, struct km_event *c)
nlh->nlmsg_len = skb->tail - b;
+ NETLINK_CB(skb).dst_groups = XFRMGRP_SA;
+
return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_SA, GFP_ATOMIC);
nlmsg_failure:
@@ -1455,6 +1459,8 @@ static int xfrm_notify_policy(struct xfrm_policy *xp, int dir, struct km_event *
nlh->nlmsg_len = skb->tail - b;
+ NETLINK_CB(skb).dst_groups = XFRMGRP_POLICY;
+
return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_POLICY, GFP_ATOMIC);
nlmsg_failure:
@@ -1480,6 +1486,8 @@ static int xfrm_notify_policy_flush(struct km_event *c)
nlh->nlmsg_len = skb->tail - b;
+ NETLINK_CB(skb).dst_groups = XFRMGRP_POLICY;
+
return netlink_broadcast(xfrm_nl, skb, 0, XFRMGRP_POLICY, GFP_ATOMIC);
nlmsg_failure:
diff --git a/security/selinux/netlink.c b/security/selinux/netlink.c
index 341dbe2579be..0f7be6524555 100644
--- a/security/selinux/netlink.c
+++ b/security/selinux/netlink.c
@@ -80,6 +80,7 @@ static void selnl_notify(int msgtype, void *data)
nlh = NLMSG_PUT(skb, 0, 0, msgtype, len);
selnl_add_payload(nlh, len, msgtype, data);
nlh->nlmsg_len = skb->tail - tmp;
+ NETLINK_CB(skb).dst_groups = SELNL_GRP_AVC;
netlink_broadcast(selnl, skb, 0, SELNL_GRP_AVC, GFP_USER);
out:
return;