netfilter: don't xt_jumpstack_alloc twice in xt_register_table
authorXiaotian Feng <[email protected]>
Mon, 31 May 2010 14:41:09 +0000 (16:41 +0200)
committerPatrick McHardy <[email protected]>
Mon, 31 May 2010 14:41:09 +0000 (16:41 +0200)
In xt_register_table, xt_jumpstack_alloc is called first, later
xt_replace_table is used. But in xt_replace_table, xt_jumpstack_alloc
will be used again. Then the memory allocated by previous xt_jumpstack_alloc
will be leaked. We can simply remove the previous xt_jumpstack_alloc because
there aren't any users of newinfo between xt_jumpstack_alloc and
xt_replace_table.

Signed-off-by: Xiaotian Feng <[email protected]>
Cc: Patrick McHardy <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Jan Engelhardt <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Rusty Russell <[email protected]>
Cc: Alexey Dobriyan <[email protected]>
Acked-By: Jan Engelhardt <[email protected]>
Signed-off-by: Patrick McHardy <[email protected]>
net/netfilter/x_tables.c

index 445de702b8b75a2dad66d96cf757a9f392ed7d80..47b1e7917a9c86423e4df95829f1d7865ae23b99 100644 (file)
@@ -844,10 +844,6 @@ struct xt_table *xt_register_table(struct net *net,
        struct xt_table_info *private;
        struct xt_table *t, *table;
 
-       ret = xt_jumpstack_alloc(newinfo);
-       if (ret < 0)
-               return ERR_PTR(ret);
-
        /* Don't add one object to multiple lists. */
        table = kmemdup(input_table, sizeof(struct xt_table), GFP_KERNEL);
        if (!table) {