Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[NETLINK]: Infinite recursion in netlink.

+7 -1
+7 -1
net/ipv4/fib_frontend.c
··· 776 776 .nl_u = { .ip4_u = { .daddr = frn->fl_addr, 777 777 .tos = frn->fl_tos, 778 778 .scope = frn->fl_scope } } }; 779 + 780 + frn->err = -ENOENT; 779 781 if (tb) { 780 782 local_bh_disable(); 781 783 ··· 789 787 frn->nh_sel = res.nh_sel; 790 788 frn->type = res.type; 791 789 frn->scope = res.scope; 790 + fib_res_put(&res); 792 791 } 793 792 local_bh_enable(); 794 793 } ··· 804 801 struct fib_table *tb; 805 802 806 803 skb = skb_dequeue(&sk->sk_receive_queue); 804 + if (skb == NULL) 805 + return; 806 + 807 807 nlh = (struct nlmsghdr *)skb->data; 808 808 if (skb->len < NLMSG_SPACE(0) || skb->len < nlh->nlmsg_len || 809 809 nlh->nlmsg_len < NLMSG_LENGTH(sizeof(*frn))) { ··· 819 813 820 814 nl_fib_lookup(frn, tb); 821 815 822 - pid = nlh->nlmsg_pid; /*pid of sending process */ 816 + pid = NETLINK_CB(skb).pid; /* pid of sending process */ 823 817 NETLINK_CB(skb).pid = 0; /* from kernel */ 824 818 NETLINK_CB(skb).dst_group = 0; /* unicast */ 825 819 netlink_unicast(sk, skb, pid, MSG_DONTWAIT);