netfilter: xt_hashlimit: dl_seq_stop() fix
authorEric Dumazet <eric.dumazet@gmail.com>
Thu, 25 Mar 2010 10:00:22 +0000 (11:00 +0100)
committerPatrick McHardy <kaber@trash.net>
Thu, 25 Mar 2010 10:00:22 +0000 (11:00 +0100)
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>
net/netfilter/xt_hashlimit.c

index 9e9c48963942ad39b722be5790c8a4b01750b1d4..70d561a2d9e0d0ef98da7d1699ff7609d6b672bd 100644 (file)
@@ -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);
 }