projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pull novell-bugzilla-156426 into release branch
[powerpc.git]
/
net
/
ipv4
/
netfilter
/
ip_conntrack_core.c
diff --git
a/net/ipv4/netfilter/ip_conntrack_core.c
b/net/ipv4/netfilter/ip_conntrack_core.c
index
84c66db
..
a297da7
100644
(file)
--- a/
net/ipv4/netfilter/ip_conntrack_core.c
+++ b/
net/ipv4/netfilter/ip_conntrack_core.c
@@
-77,11
+77,11
@@
unsigned int ip_ct_log_invalid;
static LIST_HEAD(unconfirmed);
static int ip_conntrack_vmalloc;
static LIST_HEAD(unconfirmed);
static int ip_conntrack_vmalloc;
-static unsigned int ip_conntrack_next_id
= 1
;
-static unsigned int ip_conntrack_expect_next_id
= 1
;
+static unsigned int ip_conntrack_next_id;
+static unsigned int ip_conntrack_expect_next_id;
#ifdef CONFIG_IP_NF_CONNTRACK_EVENTS
#ifdef CONFIG_IP_NF_CONNTRACK_EVENTS
-
struct notifier_block *ip_conntrack_chain
;
-
struct notifier_block *ip_conntrack_expect_chain
;
+
ATOMIC_NOTIFIER_HEAD(ip_conntrack_chain)
;
+
ATOMIC_NOTIFIER_HEAD(ip_conntrack_expect_chain)
;
DEFINE_PER_CPU(struct ip_conntrack_ecache, ip_conntrack_ecache);
DEFINE_PER_CPU(struct ip_conntrack_ecache, ip_conntrack_ecache);
@@
-92,7
+92,7
@@
__ip_ct_deliver_cached_events(struct ip_conntrack_ecache *ecache)
{
DEBUGP("ecache: delivering events for %p\n", ecache->ct);
if (is_confirmed(ecache->ct) && !is_dying(ecache->ct) && ecache->events)
{
DEBUGP("ecache: delivering events for %p\n", ecache->ct);
if (is_confirmed(ecache->ct) && !is_dying(ecache->ct) && ecache->events)
- notifier_call_chain(&ip_conntrack_chain, ecache->events,
+
atomic_
notifier_call_chain(&ip_conntrack_chain, ecache->events,
ecache->ct);
ecache->events = 0;
ip_conntrack_put(ecache->ct);
ecache->ct);
ecache->events = 0;
ip_conntrack_put(ecache->ct);
@@
-133,7
+133,7
@@
static void ip_ct_event_cache_flush(void)
struct ip_conntrack_ecache *ecache;
int cpu;
struct ip_conntrack_ecache *ecache;
int cpu;
- for_each_cpu(cpu) {
+ for_each_
possible_
cpu(cpu) {
ecache = &per_cpu(ip_conntrack_ecache, cpu);
if (ecache->ct)
ip_conntrack_put(ecache->ct);
ecache = &per_cpu(ip_conntrack_ecache, cpu);
if (ecache->ct)
ip_conntrack_put(ecache->ct);
@@
-1318,6
+1318,7
@@
getorigdst(struct sock *sk, int optval, void __user *user, int *len)
.tuple.dst.u.tcp.port;
sin.sin_addr.s_addr = ct->tuplehash[IP_CT_DIR_ORIGINAL]
.tuple.dst.ip;
.tuple.dst.u.tcp.port;
sin.sin_addr.s_addr = ct->tuplehash[IP_CT_DIR_ORIGINAL]
.tuple.dst.ip;
+ memset(sin.sin_zero, 0, sizeof(sin.sin_zero));
DEBUGP("SO_ORIGINAL_DST: %u.%u.%u.%u %u\n",
NIPQUAD(sin.sin_addr.s_addr), ntohs(sin.sin_port));
DEBUGP("SO_ORIGINAL_DST: %u.%u.%u.%u %u\n",
NIPQUAD(sin.sin_addr.s_addr), ntohs(sin.sin_port));