diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 88f4d746aa0..bc000619f4f 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 33ceeea783b..4d553a1d216 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 341dbe2579b..0f7be652455 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;