|
@@ -3212,18 +3212,20 @@ static int nf_tables_newset(struct net *net, struct sock *nlsk,
|
|
|
|
|
|
err = ops->init(set, &desc, nla);
|
|
err = ops->init(set, &desc, nla);
|
|
if (err < 0)
|
|
if (err < 0)
|
|
- goto err2;
|
|
|
|
|
|
+ goto err3;
|
|
|
|
|
|
err = nft_trans_set_add(&ctx, NFT_MSG_NEWSET, set);
|
|
err = nft_trans_set_add(&ctx, NFT_MSG_NEWSET, set);
|
|
if (err < 0)
|
|
if (err < 0)
|
|
- goto err3;
|
|
|
|
|
|
+ goto err4;
|
|
|
|
|
|
list_add_tail_rcu(&set->list, &table->sets);
|
|
list_add_tail_rcu(&set->list, &table->sets);
|
|
table->use++;
|
|
table->use++;
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
-err3:
|
|
|
|
|
|
+err4:
|
|
ops->destroy(set);
|
|
ops->destroy(set);
|
|
|
|
+err3:
|
|
|
|
+ kfree(set->name);
|
|
err2:
|
|
err2:
|
|
kvfree(set);
|
|
kvfree(set);
|
|
err1:
|
|
err1:
|