Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
David S. Miller [Tue, 15 Jul 2008 03:23:54 +0000 (20:23 -0700)]
Conflicts:

net/netfilter/nf_conntrack_proto_tcp.c

14 files changed:
1  2 
Documentation/networking/ip-sysctl.txt
drivers/net/tun.c
drivers/net/wireless/libertas/scan.c
drivers/net/wireless/rt2x00/rt2400pci.c
drivers/net/wireless/rt2x00/rt2500pci.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/zd1211rw/zd_mac.c
net/ipv4/fib_trie.c
net/ipv6/exthdrs.c
net/mac80211/rc80211_pid.h
net/mac80211/rc80211_pid_algo.c
net/netfilter/nf_conntrack_proto_tcp.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -844,8 -844,15 +844,14 @@@ static int tcp_packet(struct nf_conn *c
                        /* Attempt to reopen a closed/aborted connection.
                         * Delete this connection and look up again. */
                        write_unlock_bh(&tcp_lock);
-                       nf_ct_kill(ct);
-                       return -NF_REPEAT;
++
+                       /* Only repeat if we can actually remove the timer.
+                        * Destruction may already be in progress in process
+                        * context and we must give it a chance to terminate.
+                        */
 -                      if (del_timer(&ct->timeout)) {
 -                              ct->timeout.function((unsigned long)ct);
++                      if (nf_ct_kill(ct))
+                               return -NF_REPEAT;
 -                      }
+                       return -NF_DROP;
                }
                /* Fall through */
        case TCP_CONNTRACK_IGNORE: