diff options
-rw-r--r-- | net/ipv4/netfilter/ip_conntrack_core.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c index 9261388d5ac2..285743bfbed3 100644 --- a/net/ipv4/netfilter/ip_conntrack_core.c +++ b/net/ipv4/netfilter/ip_conntrack_core.c | |||
@@ -655,7 +655,7 @@ struct ip_conntrack *ip_conntrack_alloc(struct ip_conntrack_tuple *orig, | |||
655 | conntrack = kmem_cache_alloc(ip_conntrack_cachep, GFP_ATOMIC); | 655 | conntrack = kmem_cache_alloc(ip_conntrack_cachep, GFP_ATOMIC); |
656 | if (!conntrack) { | 656 | if (!conntrack) { |
657 | DEBUGP("Can't allocate conntrack.\n"); | 657 | DEBUGP("Can't allocate conntrack.\n"); |
658 | return NULL; | 658 | return ERR_PTR(-ENOMEM); |
659 | } | 659 | } |
660 | 660 | ||
661 | memset(conntrack, 0, sizeof(*conntrack)); | 661 | memset(conntrack, 0, sizeof(*conntrack)); |
@@ -696,8 +696,9 @@ init_conntrack(struct ip_conntrack_tuple *tuple, | |||
696 | return NULL; | 696 | return NULL; |
697 | } | 697 | } |
698 | 698 | ||
699 | if (!(conntrack = ip_conntrack_alloc(tuple, &repl_tuple))) | 699 | conntrack = ip_conntrack_alloc(tuple, &repl_tuple); |
700 | return NULL; | 700 | if (conntrack == NULL || IS_ERR(conntrack)) |
701 | return (struct ip_conntrack_tuple_hash *)conntrack; | ||
701 | 702 | ||
702 | if (!protocol->new(conntrack, skb)) { | 703 | if (!protocol->new(conntrack, skb)) { |
703 | ip_conntrack_free(conntrack); | 704 | ip_conntrack_free(conntrack); |