diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-03-25 11:00:22 +0100 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2010-03-25 11:00:22 +0100 |
commit | 55e0d7cf279177dfe320f54816320558bc370f24 (patch) | |
tree | 6f8c896e95c4a315409fb8053f2ca075b8b72962 /net | |
parent | ef1691504c83ba3eb636c0cfd3ed33f7a6d0b4ee (diff) | |
download | linux-55e0d7cf279177dfe320f54816320558bc370f24.tar.gz linux-55e0d7cf279177dfe320f54816320558bc370f24.tar.bz2 linux-55e0d7cf279177dfe320f54816320558bc370f24.zip |
netfilter: xt_hashlimit: dl_seq_stop() fix
If dl_seq_start() memory allocation fails, we crash later in
dl_seq_stop(), trying to kfree(ERR_PTR(-ENOMEM))
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/xt_hashlimit.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c index 9e9c48963942..70d561a2d9e0 100644 --- a/net/netfilter/xt_hashlimit.c +++ b/net/netfilter/xt_hashlimit.c @@ -879,7 +879,8 @@ static void dl_seq_stop(struct seq_file *s, void *v) struct xt_hashlimit_htable *htable = s->private; unsigned int *bucket = (unsigned int *)v; - kfree(bucket); + if (!IS_ERR(bucket)) + kfree(bucket); spin_unlock_bh(&htable->lock); } |