瀏覽代碼

[XFRM]: Make flush notifier prettier when subpolicy used

Might as well make flush notifier prettier when subpolicy used

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jamal Hadi Salim 18 年之前
父節點
當前提交
0c51f53c57
共有 1 個文件被更改,包括 2 次插入10 次删除
  1. 2 10
      net/xfrm/xfrm_user.c

+ 2 - 10
net/xfrm/xfrm_user.c

@@ -2113,7 +2113,6 @@ static int xfrm_notify_policy_flush(struct km_event *c)
 	unsigned char *b;
 	unsigned char *b;
 	int len = 0;
 	int len = 0;
 #ifdef CONFIG_XFRM_SUB_POLICY
 #ifdef CONFIG_XFRM_SUB_POLICY
-	struct xfrm_userpolicy_type upt;
 	len += RTA_SPACE(sizeof(struct xfrm_userpolicy_type));
 	len += RTA_SPACE(sizeof(struct xfrm_userpolicy_type));
 #endif
 #endif
 	len += NLMSG_LENGTH(0);
 	len += NLMSG_LENGTH(0);
@@ -2126,12 +2125,8 @@ static int xfrm_notify_policy_flush(struct km_event *c)
 
 
 	nlh = NLMSG_PUT(skb, c->pid, c->seq, XFRM_MSG_FLUSHPOLICY, 0);
 	nlh = NLMSG_PUT(skb, c->pid, c->seq, XFRM_MSG_FLUSHPOLICY, 0);
 	nlh->nlmsg_flags = 0;
 	nlh->nlmsg_flags = 0;
-
-#ifdef CONFIG_XFRM_SUB_POLICY
-	memset(&upt, 0, sizeof(upt));
-	upt.type = c->data.type;
-	RTA_PUT(skb, XFRMA_POLICY_TYPE, sizeof(upt), &upt);
-#endif
+	if (copy_to_user_policy_type(c->data.type, skb) < 0)
+		goto nlmsg_failure;
 
 
 	nlh->nlmsg_len = skb->tail - b;
 	nlh->nlmsg_len = skb->tail - b;
 
 
@@ -2139,9 +2134,6 @@ static int xfrm_notify_policy_flush(struct km_event *c)
 	return netlink_broadcast(xfrm_nl, skb, 0, XFRMNLGRP_POLICY, GFP_ATOMIC);
 	return netlink_broadcast(xfrm_nl, skb, 0, XFRMNLGRP_POLICY, GFP_ATOMIC);
 
 
 nlmsg_failure:
 nlmsg_failure:
-#ifdef CONFIG_XFRM_SUB_POLICY
-rtattr_failure:
-#endif
 	kfree_skb(skb);
 	kfree_skb(skb);
 	return -1;
 	return -1;
 }
 }