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:
[XFRM] STATE: Fix to respond error to get operation if no matching entry exists.
[NET]: Re-fix of doc-comment in sock.h
[6PACK]: Masking bug in 6pack driver.
[NET]: Fix kfifo_alloc() error check.
[UDP]: Make udp_encap_rcv use pskb_may_pull
[NETFILTER]: H.323 conntrack: fix crash with CONFIG_IP_NF_CT_ACCT

+32 -13
+1 -1
drivers/net/hamradio/6pack.c
··· 914 914 printk(KERN_DEBUG "6pack: protocol violation\n"); 915 915 else 916 916 sp->status = 0; 917 - cmd &= !SIXP_RX_DCD_MASK; 917 + cmd &= ~SIXP_RX_DCD_MASK; 918 918 } 919 919 sp->status = cmd & SIXP_PRIO_DATA_MASK; 920 920 } else { /* output watchdog char if idle */
+10 -5
include/net/sock.h
··· 883 883 } 884 884 885 885 /** 886 - * sk_filter_release: Release a socket filter 887 - * @rcu: rcu_head that contains the sk_filter info to remove 888 - * 889 - * Remove a filter from a socket and release its resources. 886 + * sk_filter_rcu_free: Free a socket filter 887 + * @rcu: rcu_head that contains the sk_filter to free 890 888 */ 891 - 892 889 static inline void sk_filter_rcu_free(struct rcu_head *rcu) 893 890 { 894 891 struct sk_filter *fp = container_of(rcu, struct sk_filter, rcu); 895 892 kfree(fp); 896 893 } 894 + 895 + /** 896 + * sk_filter_release: Release a socket filter 897 + * @sk: socket 898 + * @fp: filter to remove 899 + * 900 + * Remove a filter from a socket and release its resources. 901 + */ 897 902 898 903 static inline void sk_filter_release(struct sock *sk, struct sk_filter *fp) 899 904 {
+2
net/dccp/probe.c
··· 160 160 init_waitqueue_head(&dccpw.wait); 161 161 spin_lock_init(&dccpw.lock); 162 162 dccpw.fifo = kfifo_alloc(bufsize, GFP_KERNEL, &dccpw.lock); 163 + if (IS_ERR(dccpw.fifo)) 164 + return PTR_ERR(dccpw.fifo); 163 165 164 166 if (!proc_net_fops_create(procname, S_IRUSR, &dccpprobe_fops)) 165 167 goto err0;
+2 -2
net/ipv4/netfilter/ip_conntrack_helper_h323.c
··· 1417 1417 DEBUGP 1418 1418 ("ip_ct_ras: set RAS connection timeout to %u seconds\n", 1419 1419 info->timeout); 1420 - ip_ct_refresh_acct(ct, ctinfo, NULL, info->timeout * HZ); 1420 + ip_ct_refresh(ct, *pskb, info->timeout * HZ); 1421 1421 1422 1422 /* Set expect timeout */ 1423 1423 read_lock_bh(&ip_conntrack_lock); ··· 1465 1465 info->sig_port[!dir] = 0; 1466 1466 1467 1467 /* Give it 30 seconds for UCF or URJ */ 1468 - ip_ct_refresh_acct(ct, ctinfo, NULL, 30 * HZ); 1468 + ip_ct_refresh(ct, *pskb, 30 * HZ); 1469 1469 1470 1470 return 0; 1471 1471 }
+2
net/ipv4/tcp_probe.c
··· 156 156 init_waitqueue_head(&tcpw.wait); 157 157 spin_lock_init(&tcpw.lock); 158 158 tcpw.fifo = kfifo_alloc(bufsize, GFP_KERNEL, &tcpw.lock); 159 + if (IS_ERR(tcpw.fifo)) 160 + return PTR_ERR(tcpw.fifo); 159 161 160 162 if (!proc_net_fops_create(procname, S_IRUSR, &tcpprobe_fops)) 161 163 goto err0;
+14 -5
net/ipv4/udp.c
··· 928 928 return 1; 929 929 #else 930 930 struct udp_sock *up = udp_sk(sk); 931 - struct udphdr *uh = skb->h.uh; 931 + struct udphdr *uh; 932 932 struct iphdr *iph; 933 933 int iphlen, len; 934 934 935 - __u8 *udpdata = (__u8 *)uh + sizeof(struct udphdr); 936 - __be32 *udpdata32 = (__be32 *)udpdata; 935 + __u8 *udpdata; 936 + __be32 *udpdata32; 937 937 __u16 encap_type = up->encap_type; 938 938 939 939 /* if we're overly short, let UDP handle it */ 940 - if (udpdata > skb->tail) 940 + len = skb->len - sizeof(struct udphdr); 941 + if (len <= 0) 941 942 return 1; 942 943 943 944 /* if this is not encapsulated socket, then just return now */ 944 945 if (!encap_type) 945 946 return 1; 946 947 947 - len = skb->tail - udpdata; 948 + /* If this is a paged skb, make sure we pull up 949 + * whatever data we need to look at. */ 950 + if (!pskb_may_pull(skb, sizeof(struct udphdr) + min(len, 8))) 951 + return 1; 952 + 953 + /* Now we can get the pointers */ 954 + uh = skb->h.uh; 955 + udpdata = (__u8 *)uh + sizeof(struct udphdr); 956 + udpdata32 = (__be32 *)udpdata; 948 957 949 958 switch (encap_type) { 950 959 default:
+1
net/xfrm/xfrm_user.c
··· 495 495 goto out; 496 496 } 497 497 498 + err = -ESRCH; 498 499 x = xfrm_state_lookup_byaddr(&p->daddr, saddr, p->proto, 499 500 p->family); 500 501 }