make xfrm_user use netlink_check_skb
Subsystems (3)
PATCH 3/4 make xfrm_user use netlink_check_skb
The modification required to make xfrm_user.c use netlink_check_skb
--
Pablo
===== net/xfrm/xfrm_user.c 1.52 vs edited =====
net/xfrm/xfrm_user.c +1 -28
@@ -980,33 +980,6 @@return -1 ; } -static int xfrm_user_rcv_skb (struct sk_buff *skb) -{ -int err; -struct nlmsghdr *nlh; - -while (skb->len >=NLMSG_SPACE (0 )) { -u32 rlen; - - nlh = (struct nlmsghdr *) skb->data; -if (nlh->nlmsg_len <sizeof (*nlh) || - skb->len < nlh->nlmsg_len) -return 0 ; - rlen =NLMSG_ALIGN (nlh->nlmsg_len); -if (rlen > skb->len) - rlen = skb->len; -if (xfrm_user_rcv_msg (skb, nlh, &err) <0 ) { -if (err ==0 ) -return -1 ; -netlink_ack (skb, nlh, err); - }else if (nlh->nlmsg_flags &NLM_F_ACK ) -netlink_ack (skb, nlh,0 ); -skb_pull (skb, rlen); - } - -return 0 ; -} -static void xfrm_netlink_rcv (struct sock *sk,int len) { do {
@@ -1015,7 +988,7 @@down (&xfrm_cfg_sem);while ((skb =skb_dequeue (&sk->sk_receive_queue)) !=NULL ) { -if (xfrm_user_rcv_skb (skb)) { +if (netlink_process_skb (skb, xfrm_user_rcv_msg)) {if (skb->len)skb_queue_head (&sk->sk_receive_queue, skb);