mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 09:31:50 +00:00
netfilter: nf_tables: bogus EBUSY in helper removal from transaction
Proper use counter updates when activating and deactivating the object,
otherwise, this hits bogus EBUSY error.
Fixes: cd5125d8f5
("netfilter: nf_tables: split set destruction in deactivate and destroy phase")
Reported-by: Laura Garcia <nevola@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
6d65561f3d
commit
8ffcd32f64
@ -65,21 +65,34 @@ nla_put_failure:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nft_objref_destroy(const struct nft_ctx *ctx,
|
static void nft_objref_deactivate(const struct nft_ctx *ctx,
|
||||||
const struct nft_expr *expr)
|
const struct nft_expr *expr,
|
||||||
|
enum nft_trans_phase phase)
|
||||||
{
|
{
|
||||||
struct nft_object *obj = nft_objref_priv(expr);
|
struct nft_object *obj = nft_objref_priv(expr);
|
||||||
|
|
||||||
|
if (phase == NFT_TRANS_COMMIT)
|
||||||
|
return;
|
||||||
|
|
||||||
obj->use--;
|
obj->use--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nft_objref_activate(const struct nft_ctx *ctx,
|
||||||
|
const struct nft_expr *expr)
|
||||||
|
{
|
||||||
|
struct nft_object *obj = nft_objref_priv(expr);
|
||||||
|
|
||||||
|
obj->use++;
|
||||||
|
}
|
||||||
|
|
||||||
static struct nft_expr_type nft_objref_type;
|
static struct nft_expr_type nft_objref_type;
|
||||||
static const struct nft_expr_ops nft_objref_ops = {
|
static const struct nft_expr_ops nft_objref_ops = {
|
||||||
.type = &nft_objref_type,
|
.type = &nft_objref_type,
|
||||||
.size = NFT_EXPR_SIZE(sizeof(struct nft_object *)),
|
.size = NFT_EXPR_SIZE(sizeof(struct nft_object *)),
|
||||||
.eval = nft_objref_eval,
|
.eval = nft_objref_eval,
|
||||||
.init = nft_objref_init,
|
.init = nft_objref_init,
|
||||||
.destroy = nft_objref_destroy,
|
.activate = nft_objref_activate,
|
||||||
|
.deactivate = nft_objref_deactivate,
|
||||||
.dump = nft_objref_dump,
|
.dump = nft_objref_dump,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user