Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
Pablo Neira Ayuso says: ==================== Netfilter fixes for net The following patchset contains Netfilter fixes for your net tree: 1) Fix list corruption in device notifier in the masquerade infrastructure, from Florian Westphal. 2) Fix double-free of sets and use-after-free when deleting elements. 3) Don't bogusly return EBUSY when removing a set after flush command. 4) Use-after-free in dynamically allocate operations. 5) Don't report a new ruleset generation to userspace if transaction list is empty, this invalidates the userspace cache innecessarily. From Florian Westphal. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Este cometimento está contido em:
@@ -382,6 +382,7 @@ void nft_unregister_set(struct nft_set_type *type);
|
||||
* @dtype: data type (verdict or numeric type defined by userspace)
|
||||
* @objtype: object type (see NFT_OBJECT_* definitions)
|
||||
* @size: maximum set size
|
||||
* @use: number of rules references to this set
|
||||
* @nelems: number of elements
|
||||
* @ndeact: number of deactivated elements queued for removal
|
||||
* @timeout: default timeout value in jiffies
|
||||
@@ -407,6 +408,7 @@ struct nft_set {
|
||||
u32 dtype;
|
||||
u32 objtype;
|
||||
u32 size;
|
||||
u32 use;
|
||||
atomic_t nelems;
|
||||
u32 ndeact;
|
||||
u64 timeout;
|
||||
@@ -416,7 +418,8 @@ struct nft_set {
|
||||
unsigned char *udata;
|
||||
/* runtime data below here */
|
||||
const struct nft_set_ops *ops ____cacheline_aligned;
|
||||
u16 flags:14,
|
||||
u16 flags:13,
|
||||
bound:1,
|
||||
genmask:2;
|
||||
u8 klen;
|
||||
u8 dlen;
|
||||
@@ -466,6 +469,10 @@ struct nft_set_binding {
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
enum nft_trans_phase;
|
||||
void nf_tables_deactivate_set(const struct nft_ctx *ctx, struct nft_set *set,
|
||||
struct nft_set_binding *binding,
|
||||
enum nft_trans_phase phase);
|
||||
int nf_tables_bind_set(const struct nft_ctx *ctx, struct nft_set *set,
|
||||
struct nft_set_binding *binding);
|
||||
void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set,
|
||||
@@ -1344,15 +1351,12 @@ struct nft_trans_rule {
|
||||
struct nft_trans_set {
|
||||
struct nft_set *set;
|
||||
u32 set_id;
|
||||
bool bound;
|
||||
};
|
||||
|
||||
#define nft_trans_set(trans) \
|
||||
(((struct nft_trans_set *)trans->data)->set)
|
||||
#define nft_trans_set_id(trans) \
|
||||
(((struct nft_trans_set *)trans->data)->set_id)
|
||||
#define nft_trans_set_bound(trans) \
|
||||
(((struct nft_trans_set *)trans->data)->bound)
|
||||
|
||||
struct nft_trans_chain {
|
||||
bool update;
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador