stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Pablo Neira Ayuso <pablo@netfilter.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 065/136] netfilter: nf_tables: upfront validation of data via nft_data_init()
Date: Mon, 29 Aug 2022 12:58:52 +0200	[thread overview]
Message-ID: <20220829105807.300791309@linuxfoundation.org> (raw)
In-Reply-To: <20220829105804.609007228@linuxfoundation.org>

From: Pablo Neira Ayuso <pablo@netfilter.org>

[ Upstream commit 341b6941608762d8235f3fd1e45e4d7114ed8c2c ]

Instead of parsing the data and then validate that type and length are
correct, pass a description of the expected data so it can be validated
upfront before parsing it to bail out earlier.

This patch adds a new .size field to specify the maximum size of the
data area. The .len field is optional and it is used as an input/output
field, it provides the specific length of the expected data in the input
path. If then .len field is not specified, then obtained length from the
netlink attribute is stored. This is required by cmp, bitwise, range and
immediate, which provide no netlink attribute that describes the data
length. The immediate expression uses the destination register type to
infer the expected data type.

Relying on opencoded validation of the expected data might lead to
subtle bugs as described in 7e6bc1f6cabc ("netfilter: nf_tables:
stricter validation of element data").

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/net/netfilter/nf_tables.h |  4 +-
 net/netfilter/nf_tables_api.c     | 78 ++++++++++++++++---------------
 net/netfilter/nft_bitwise.c       | 66 +++++++++++++-------------
 net/netfilter/nft_cmp.c           | 44 ++++++++---------
 net/netfilter/nft_immediate.c     | 22 +++++++--
 net/netfilter/nft_range.c         | 27 +++++------
 6 files changed, 126 insertions(+), 115 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index af4d9f1049528..6a38bf8538f1e 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -195,11 +195,11 @@ struct nft_ctx {
 
 struct nft_data_desc {
 	enum nft_data_types		type;
+	unsigned int			size;
 	unsigned int			len;
 };
 
-int nft_data_init(const struct nft_ctx *ctx,
-		  struct nft_data *data, unsigned int size,
+int nft_data_init(const struct nft_ctx *ctx, struct nft_data *data,
 		  struct nft_data_desc *desc, const struct nlattr *nla);
 void nft_data_hold(const struct nft_data *data, enum nft_data_types type);
 void nft_data_release(const struct nft_data *data, enum nft_data_types type);
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index b4d38656d98fa..b19f4255b9018 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -5120,19 +5120,13 @@ static int nft_setelem_parse_flags(const struct nft_set *set,
 static int nft_setelem_parse_key(struct nft_ctx *ctx, struct nft_set *set,
 				 struct nft_data *key, struct nlattr *attr)
 {
-	struct nft_data_desc desc;
-	int err;
-
-	err = nft_data_init(ctx, key, NFT_DATA_VALUE_MAXLEN, &desc, attr);
-	if (err < 0)
-		return err;
-
-	if (desc.type != NFT_DATA_VALUE || desc.len != set->klen) {
-		nft_data_release(key, desc.type);
-		return -EINVAL;
-	}
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= NFT_DATA_VALUE_MAXLEN,
+		.len	= set->klen,
+	};
 
-	return 0;
+	return nft_data_init(ctx, key, &desc, attr);
 }
 
 static int nft_setelem_parse_data(struct nft_ctx *ctx, struct nft_set *set,
@@ -5141,24 +5135,17 @@ static int nft_setelem_parse_data(struct nft_ctx *ctx, struct nft_set *set,
 				  struct nlattr *attr)
 {
 	u32 dtype;
-	int err;
-
-	err = nft_data_init(ctx, data, NFT_DATA_VALUE_MAXLEN, desc, attr);
-	if (err < 0)
-		return err;
 
 	if (set->dtype == NFT_DATA_VERDICT)
 		dtype = NFT_DATA_VERDICT;
 	else
 		dtype = NFT_DATA_VALUE;
 
-	if (dtype != desc->type ||
-	    set->dlen != desc->len) {
-		nft_data_release(data, desc->type);
-		return -EINVAL;
-	}
+	desc->type = dtype;
+	desc->size = NFT_DATA_VALUE_MAXLEN;
+	desc->len = set->dlen;
 
-	return 0;
+	return nft_data_init(ctx, data, desc, attr);
 }
 
 static void *nft_setelem_catchall_get(const struct net *net,
@@ -9524,7 +9511,7 @@ static int nft_verdict_init(const struct nft_ctx *ctx, struct nft_data *data,
 	}
 
 	desc->len = sizeof(data->verdict);
-	desc->type = NFT_DATA_VERDICT;
+
 	return 0;
 }
 
@@ -9577,20 +9564,25 @@ int nft_verdict_dump(struct sk_buff *skb, int type, const struct nft_verdict *v)
 }
 
 static int nft_value_init(const struct nft_ctx *ctx,
-			  struct nft_data *data, unsigned int size,
-			  struct nft_data_desc *desc, const struct nlattr *nla)
+			  struct nft_data *data, struct nft_data_desc *desc,
+			  const struct nlattr *nla)
 {
 	unsigned int len;
 
 	len = nla_len(nla);
 	if (len == 0)
 		return -EINVAL;
-	if (len > size)
+	if (len > desc->size)
 		return -EOVERFLOW;
+	if (desc->len) {
+		if (len != desc->len)
+			return -EINVAL;
+	} else {
+		desc->len = len;
+	}
 
 	nla_memcpy(data->data, nla, len);
-	desc->type = NFT_DATA_VALUE;
-	desc->len  = len;
+
 	return 0;
 }
 
@@ -9610,7 +9602,6 @@ static const struct nla_policy nft_data_policy[NFTA_DATA_MAX + 1] = {
  *
  *	@ctx: context of the expression using the data
  *	@data: destination struct nft_data
- *	@size: maximum data length
  *	@desc: data description
  *	@nla: netlink attribute containing data
  *
@@ -9620,24 +9611,35 @@ static const struct nla_policy nft_data_policy[NFTA_DATA_MAX + 1] = {
  *	The caller can indicate that it only wants to accept data of type
  *	NFT_DATA_VALUE by passing NULL for the ctx argument.
  */
-int nft_data_init(const struct nft_ctx *ctx,
-		  struct nft_data *data, unsigned int size,
+int nft_data_init(const struct nft_ctx *ctx, struct nft_data *data,
 		  struct nft_data_desc *desc, const struct nlattr *nla)
 {
 	struct nlattr *tb[NFTA_DATA_MAX + 1];
 	int err;
 
+	if (WARN_ON_ONCE(!desc->size))
+		return -EINVAL;
+
 	err = nla_parse_nested_deprecated(tb, NFTA_DATA_MAX, nla,
 					  nft_data_policy, NULL);
 	if (err < 0)
 		return err;
 
-	if (tb[NFTA_DATA_VALUE])
-		return nft_value_init(ctx, data, size, desc,
-				      tb[NFTA_DATA_VALUE]);
-	if (tb[NFTA_DATA_VERDICT] && ctx != NULL)
-		return nft_verdict_init(ctx, data, desc, tb[NFTA_DATA_VERDICT]);
-	return -EINVAL;
+	if (tb[NFTA_DATA_VALUE]) {
+		if (desc->type != NFT_DATA_VALUE)
+			return -EINVAL;
+
+		err = nft_value_init(ctx, data, desc, tb[NFTA_DATA_VALUE]);
+	} else if (tb[NFTA_DATA_VERDICT] && ctx != NULL) {
+		if (desc->type != NFT_DATA_VERDICT)
+			return -EINVAL;
+
+		err = nft_verdict_init(ctx, data, desc, tb[NFTA_DATA_VERDICT]);
+	} else {
+		err = -EINVAL;
+	}
+
+	return err;
 }
 EXPORT_SYMBOL_GPL(nft_data_init);
 
diff --git a/net/netfilter/nft_bitwise.c b/net/netfilter/nft_bitwise.c
index d0c648b64cd40..d6ab7aa14adc2 100644
--- a/net/netfilter/nft_bitwise.c
+++ b/net/netfilter/nft_bitwise.c
@@ -93,7 +93,16 @@ static const struct nla_policy nft_bitwise_policy[NFTA_BITWISE_MAX + 1] = {
 static int nft_bitwise_init_bool(struct nft_bitwise *priv,
 				 const struct nlattr *const tb[])
 {
-	struct nft_data_desc mask, xor;
+	struct nft_data_desc mask = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->mask),
+		.len	= priv->len,
+	};
+	struct nft_data_desc xor = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->xor),
+		.len	= priv->len,
+	};
 	int err;
 
 	if (tb[NFTA_BITWISE_DATA])
@@ -103,37 +112,30 @@ static int nft_bitwise_init_bool(struct nft_bitwise *priv,
 	    !tb[NFTA_BITWISE_XOR])
 		return -EINVAL;
 
-	err = nft_data_init(NULL, &priv->mask, sizeof(priv->mask), &mask,
-			    tb[NFTA_BITWISE_MASK]);
+	err = nft_data_init(NULL, &priv->mask, &mask, tb[NFTA_BITWISE_MASK]);
 	if (err < 0)
 		return err;
-	if (mask.type != NFT_DATA_VALUE || mask.len != priv->len) {
-		err = -EINVAL;
-		goto err_mask_release;
-	}
 
-	err = nft_data_init(NULL, &priv->xor, sizeof(priv->xor), &xor,
-			    tb[NFTA_BITWISE_XOR]);
+	err = nft_data_init(NULL, &priv->xor, &xor, tb[NFTA_BITWISE_XOR]);
 	if (err < 0)
-		goto err_mask_release;
-	if (xor.type != NFT_DATA_VALUE || xor.len != priv->len) {
-		err = -EINVAL;
-		goto err_xor_release;
-	}
+		goto err_xor_err;
 
 	return 0;
 
-err_xor_release:
-	nft_data_release(&priv->xor, xor.type);
-err_mask_release:
+err_xor_err:
 	nft_data_release(&priv->mask, mask.type);
+
 	return err;
 }
 
 static int nft_bitwise_init_shift(struct nft_bitwise *priv,
 				  const struct nlattr *const tb[])
 {
-	struct nft_data_desc d;
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->data),
+		.len	= sizeof(u32),
+	};
 	int err;
 
 	if (tb[NFTA_BITWISE_MASK] ||
@@ -143,13 +145,12 @@ static int nft_bitwise_init_shift(struct nft_bitwise *priv,
 	if (!tb[NFTA_BITWISE_DATA])
 		return -EINVAL;
 
-	err = nft_data_init(NULL, &priv->data, sizeof(priv->data), &d,
-			    tb[NFTA_BITWISE_DATA]);
+	err = nft_data_init(NULL, &priv->data, &desc, tb[NFTA_BITWISE_DATA]);
 	if (err < 0)
 		return err;
-	if (d.type != NFT_DATA_VALUE || d.len != sizeof(u32) ||
-	    priv->data.data[0] >= BITS_PER_TYPE(u32)) {
-		nft_data_release(&priv->data, d.type);
+
+	if (priv->data.data[0] >= BITS_PER_TYPE(u32)) {
+		nft_data_release(&priv->data, desc.type);
 		return -EINVAL;
 	}
 
@@ -291,22 +292,21 @@ static const struct nft_expr_ops nft_bitwise_ops = {
 static int
 nft_bitwise_extract_u32_data(const struct nlattr * const tb, u32 *out)
 {
-	struct nft_data_desc desc;
 	struct nft_data data;
-	int err = 0;
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(data),
+		.len	= sizeof(u32),
+	};
+	int err;
 
-	err = nft_data_init(NULL, &data, sizeof(data), &desc, tb);
+	err = nft_data_init(NULL, &data, &desc, tb);
 	if (err < 0)
 		return err;
 
-	if (desc.type != NFT_DATA_VALUE || desc.len != sizeof(u32)) {
-		err = -EINVAL;
-		goto err;
-	}
 	*out = data.data[0];
-err:
-	nft_data_release(&data, desc.type);
-	return err;
+
+	return 0;
 }
 
 static int nft_bitwise_fast_init(const struct nft_ctx *ctx,
diff --git a/net/netfilter/nft_cmp.c b/net/netfilter/nft_cmp.c
index 917072af09df9..461763a571f20 100644
--- a/net/netfilter/nft_cmp.c
+++ b/net/netfilter/nft_cmp.c
@@ -73,20 +73,16 @@ static int nft_cmp_init(const struct nft_ctx *ctx, const struct nft_expr *expr,
 			const struct nlattr * const tb[])
 {
 	struct nft_cmp_expr *priv = nft_expr_priv(expr);
-	struct nft_data_desc desc;
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->data),
+	};
 	int err;
 
-	err = nft_data_init(NULL, &priv->data, sizeof(priv->data), &desc,
-			    tb[NFTA_CMP_DATA]);
+	err = nft_data_init(NULL, &priv->data, &desc, tb[NFTA_CMP_DATA]);
 	if (err < 0)
 		return err;
 
-	if (desc.type != NFT_DATA_VALUE) {
-		err = -EINVAL;
-		nft_data_release(&priv->data, desc.type);
-		return err;
-	}
-
 	err = nft_parse_register_load(tb[NFTA_CMP_SREG], &priv->sreg, desc.len);
 	if (err < 0)
 		return err;
@@ -201,12 +197,14 @@ static int nft_cmp_fast_init(const struct nft_ctx *ctx,
 			     const struct nlattr * const tb[])
 {
 	struct nft_cmp_fast_expr *priv = nft_expr_priv(expr);
-	struct nft_data_desc desc;
 	struct nft_data data;
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(data),
+	};
 	int err;
 
-	err = nft_data_init(NULL, &data, sizeof(data), &desc,
-			    tb[NFTA_CMP_DATA]);
+	err = nft_data_init(NULL, &data, &desc, tb[NFTA_CMP_DATA]);
 	if (err < 0)
 		return err;
 
@@ -299,11 +297,13 @@ static int nft_cmp16_fast_init(const struct nft_ctx *ctx,
 			       const struct nlattr * const tb[])
 {
 	struct nft_cmp16_fast_expr *priv = nft_expr_priv(expr);
-	struct nft_data_desc desc;
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->data),
+	};
 	int err;
 
-	err = nft_data_init(NULL, &priv->data, sizeof(priv->data), &desc,
-			    tb[NFTA_CMP_DATA]);
+	err = nft_data_init(NULL, &priv->data, &desc, tb[NFTA_CMP_DATA]);
 	if (err < 0)
 		return err;
 
@@ -365,8 +365,11 @@ const struct nft_expr_ops nft_cmp16_fast_ops = {
 static const struct nft_expr_ops *
 nft_cmp_select_ops(const struct nft_ctx *ctx, const struct nlattr * const tb[])
 {
-	struct nft_data_desc desc;
 	struct nft_data data;
+	struct nft_data_desc desc = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(data),
+	};
 	enum nft_cmp_ops op;
 	u8 sreg;
 	int err;
@@ -389,14 +392,10 @@ nft_cmp_select_ops(const struct nft_ctx *ctx, const struct nlattr * const tb[])
 		return ERR_PTR(-EINVAL);
 	}
 
-	err = nft_data_init(NULL, &data, sizeof(data), &desc,
-			    tb[NFTA_CMP_DATA]);
+	err = nft_data_init(NULL, &data, &desc, tb[NFTA_CMP_DATA]);
 	if (err < 0)
 		return ERR_PTR(err);
 
-	if (desc.type != NFT_DATA_VALUE)
-		goto err1;
-
 	sreg = ntohl(nla_get_be32(tb[NFTA_CMP_SREG]));
 
 	if (op == NFT_CMP_EQ || op == NFT_CMP_NEQ) {
@@ -408,9 +407,6 @@ nft_cmp_select_ops(const struct nft_ctx *ctx, const struct nlattr * const tb[])
 			return &nft_cmp16_fast_ops;
 	}
 	return &nft_cmp_ops;
-err1:
-	nft_data_release(&data, desc.type);
-	return ERR_PTR(-EINVAL);
 }
 
 struct nft_expr_type nft_cmp_type __read_mostly = {
diff --git a/net/netfilter/nft_immediate.c b/net/netfilter/nft_immediate.c
index d0f67d325bdfd..fcdbc5ed3f367 100644
--- a/net/netfilter/nft_immediate.c
+++ b/net/netfilter/nft_immediate.c
@@ -29,20 +29,36 @@ static const struct nla_policy nft_immediate_policy[NFTA_IMMEDIATE_MAX + 1] = {
 	[NFTA_IMMEDIATE_DATA]	= { .type = NLA_NESTED },
 };
 
+static enum nft_data_types nft_reg_to_type(const struct nlattr *nla)
+{
+	enum nft_data_types type;
+	u8 reg;
+
+	reg = ntohl(nla_get_be32(nla));
+	if (reg == NFT_REG_VERDICT)
+		type = NFT_DATA_VERDICT;
+	else
+		type = NFT_DATA_VALUE;
+
+	return type;
+}
+
 static int nft_immediate_init(const struct nft_ctx *ctx,
 			      const struct nft_expr *expr,
 			      const struct nlattr * const tb[])
 {
 	struct nft_immediate_expr *priv = nft_expr_priv(expr);
-	struct nft_data_desc desc;
+	struct nft_data_desc desc = {
+		.size	= sizeof(priv->data),
+	};
 	int err;
 
 	if (tb[NFTA_IMMEDIATE_DREG] == NULL ||
 	    tb[NFTA_IMMEDIATE_DATA] == NULL)
 		return -EINVAL;
 
-	err = nft_data_init(ctx, &priv->data, sizeof(priv->data), &desc,
-			    tb[NFTA_IMMEDIATE_DATA]);
+	desc.type = nft_reg_to_type(tb[NFTA_IMMEDIATE_DREG]);
+	err = nft_data_init(ctx, &priv->data, &desc, tb[NFTA_IMMEDIATE_DATA]);
 	if (err < 0)
 		return err;
 
diff --git a/net/netfilter/nft_range.c b/net/netfilter/nft_range.c
index e4a1c44d7f513..e6bbe32c323df 100644
--- a/net/netfilter/nft_range.c
+++ b/net/netfilter/nft_range.c
@@ -51,7 +51,14 @@ static int nft_range_init(const struct nft_ctx *ctx, const struct nft_expr *expr
 			const struct nlattr * const tb[])
 {
 	struct nft_range_expr *priv = nft_expr_priv(expr);
-	struct nft_data_desc desc_from, desc_to;
+	struct nft_data_desc desc_from = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->data_from),
+	};
+	struct nft_data_desc desc_to = {
+		.type	= NFT_DATA_VALUE,
+		.size	= sizeof(priv->data_to),
+	};
 	int err;
 	u32 op;
 
@@ -61,26 +68,16 @@ static int nft_range_init(const struct nft_ctx *ctx, const struct nft_expr *expr
 	    !tb[NFTA_RANGE_TO_DATA])
 		return -EINVAL;
 
-	err = nft_data_init(NULL, &priv->data_from, sizeof(priv->data_from),
-			    &desc_from, tb[NFTA_RANGE_FROM_DATA]);
+	err = nft_data_init(NULL, &priv->data_from, &desc_from,
+			    tb[NFTA_RANGE_FROM_DATA]);
 	if (err < 0)
 		return err;
 
-	if (desc_from.type != NFT_DATA_VALUE) {
-		err = -EINVAL;
-		goto err1;
-	}
-
-	err = nft_data_init(NULL, &priv->data_to, sizeof(priv->data_to),
-			    &desc_to, tb[NFTA_RANGE_TO_DATA]);
+	err = nft_data_init(NULL, &priv->data_to, &desc_to,
+			    tb[NFTA_RANGE_TO_DATA]);
 	if (err < 0)
 		goto err1;
 
-	if (desc_to.type != NFT_DATA_VALUE) {
-		err = -EINVAL;
-		goto err2;
-	}
-
 	if (desc_from.len != desc_to.len) {
 		err = -EINVAL;
 		goto err2;
-- 
2.35.1




  parent reply	other threads:[~2022-08-29 11:12 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-29 10:57 [PATCH 5.15 000/136] 5.15.64-rc1 review Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 001/136] wifi: rtlwifi: remove always-true condition pointed out by GCC 12 Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 002/136] eth: sun: cassini: remove dead code Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 003/136] audit: fix potential double free on error path from fsnotify_add_inode_mark Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 004/136] cgroup: Fix race condition at rebind_subsystems() Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 005/136] parisc: Make CONFIG_64BIT available for ARCH=parisc64 only Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 006/136] parisc: Fix exception handler for fldw and fstw instructions Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 007/136] kernel/sys_ni: add compat entry for fadvise64_64 Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 008/136] x86/entry: Move CLD to the start of the idtentry macro Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 009/136] block: add a bdev_max_zone_append_sectors helper Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 010/136] block: add bdev_max_segments() helper Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 011/136] btrfs: zoned: revive max_zone_append_bytes Greg Kroah-Hartman
2022-08-29 10:57 ` [PATCH 5.15 012/136] btrfs: replace BTRFS_MAX_EXTENT_SIZE with fs_info->max_extent_size Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 013/136] btrfs: convert count_max_extents() to use fs_info->max_extent_size Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 014/136] Input: i8042 - move __initconst to fix code styling warning Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 015/136] Input: i8042 - merge quirk tables Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 016/136] Input: i8042 - add TUXEDO devices to i8042 " Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 017/136] Input: i8042 - add additional " Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 018/136] drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 019/136] scsi: qla2xxx: Fix response queue handler reading stale packets Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 020/136] scsi: qla2xxx: edif: Fix dropped IKE message Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 021/136] btrfs: put initial index value of a directory in a constant Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 022/136] btrfs: pass the dentry to btrfs_log_new_name() instead of the inode Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 023/136] btrfs: remove unnecessary parameter delalloc_start for writepage_delalloc() Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 024/136] riscv: lib: uaccess: fold fixups into body Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 025/136] riscv: lib: uaccess: fix CSR_STATUS SR_SUM bit Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 026/136] xfrm: fix refcount leak in __xfrm_policy_check() Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 027/136] xfrm: clone missing x->lastused in xfrm_do_migrate Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 028/136] af_key: Do not call xfrm_probe_algs in parallel Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 029/136] xfrm: policy: fix metadata dst->dev xmit null pointer dereference Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 030/136] fs: require CAP_SYS_ADMIN in target namespace for idmapped mounts Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 031/136] net: use eth_hw_addr_set() instead of ether_addr_copy() Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 032/136] Revert "net: macsec: update SCI upon MAC address change." Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 033/136] NFS: Dont allocate nfs_fattr on the stack in __nfs42_ssc_open() Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 034/136] NFSv4.2 fix problems with __nfs42_ssc_open Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 035/136] SUNRPC: RPC level errors should set task->tk_rpc_status Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 036/136] mm/smaps: dont access young/dirty bit if pte unpresent Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 037/136] ntfs: fix acl handling Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 038/136] rose: check NULL rose_loopback_neigh->loopback Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 039/136] r8152: fix the units of some registers for RTL8156A Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 040/136] r8152: fix the RX FIFO settings when suspending Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 041/136] nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 042/136] ice: xsk: Force rings to be sized to power of 2 Greg Kroah-Hartman
2022-08-29 11:16   ` Maciej Fijalkowski
2022-08-29 11:39     ` Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 043/136] ice: xsk: prohibit usage of non-balanced queue id Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 044/136] net/mlx5e: Properly disable vlan strip on non-UL reps Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 045/136] net/mlx5: Avoid false positive lockdep warning by adding lock_class_key Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 046/136] net/mlx5e: Fix wrong application of the LRO state Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 047/136] net/mlx5e: Fix wrong tc flag used when set hw-tc-offload off Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 048/136] net: ipa: dont assume SMEM is page-aligned Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 049/136] net: phy: Dont WARN for PHY_READY state in mdio_bus_phy_resume() Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 050/136] net: moxa: get rid of asymmetry in DMA mapping/unmapping Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 051/136] bonding: 802.3ad: fix no transmission of LACPDUs Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 052/136] net: ipvtap - add __init/__exit annotations to module init/exit funcs Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 053/136] netfilter: ebtables: reject blobs that dont provide all entry points Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 054/136] bnxt_en: fix NQ resource accounting during vf creation on 57500 chips Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 055/136] netfilter: nf_tables: disallow updates of implicit chain Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 056/136] netfilter: nf_tables: make table handle allocation per-netns friendly Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 057/136] netfilter: nft_payload: report ERANGE for too long offset and length Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 058/136] netfilter: nft_payload: do not truncate csum_offset and csum_type Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 059/136] netfilter: nf_tables: do not leave chain stats enabled on error Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 060/136] netfilter: nft_osf: restrict osf to ipv4, ipv6 and inet families Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 061/136] netfilter: nft_tunnel: restrict it to netdev family Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 062/136] netfilter: nf_tables: consolidate rule verdict trace call Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 063/136] netfilter: nft_cmp: optimize comparison for 16-bytes Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 064/136] netfilter: bitwise: improve error goto labels Greg Kroah-Hartman
2022-08-29 10:58 ` Greg Kroah-Hartman [this message]
2022-08-29 10:58 ` [PATCH 5.15 066/136] netfilter: nf_tables: disallow jump to implicit chain from set element Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 067/136] netfilter: nf_tables: disallow binding to already bound chain Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 068/136] netfilter: flowtable: add function to invoke garbage collection immediately Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 069/136] netfilter: flowtable: fix stuck flows on cleanup due to pending work Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 070/136] net: Fix data-races around sysctl_[rw]mem_(max|default) Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 071/136] net: Fix data-races around weight_p and dev_weight_[rt]x_bias Greg Kroah-Hartman
2022-08-29 10:58 ` [PATCH 5.15 072/136] net: Fix data-races around netdev_max_backlog Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 073/136] net: Fix data-races around netdev_tstamp_prequeue Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 074/136] ratelimit: Fix data-races in ___ratelimit() Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 075/136] net: Fix data-races around sysctl_optmem_max Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 076/136] net: Fix a data-race around sysctl_tstamp_allow_data Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 077/136] net: Fix a data-race around sysctl_net_busy_poll Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 078/136] net: Fix a data-race around sysctl_net_busy_read Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 079/136] net: Fix a data-race around netdev_budget Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 080/136] tcp: expose the tcp_mark_push() and tcp_skb_entail() helpers Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 081/136] mptcp: stop relying on tcp_tx_skb_cache Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 082/136] net: Fix data-races around sysctl_max_skb_frags Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 083/136] net: Fix a data-race around netdev_budget_usecs Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 084/136] net: Fix data-races around sysctl_fb_tunnels_only_for_init_net Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 085/136] net: Fix data-races around sysctl_devconf_inherit_init_net Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 086/136] net: Fix a data-race around sysctl_somaxconn Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 087/136] ixgbe: stop resetting SYSTIME in ixgbe_ptp_start_cyclecounter Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 088/136] i40e: Fix incorrect address type for IPv6 flow rules Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 089/136] rxrpc: Fix locking in rxrpcs sendmsg Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 090/136] ionic: widen queue_lock use around lif init and deinit Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 091/136] ionic: clear broken state on generation change Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 092/136] ionic: fix up issues with handling EAGAIN on FW cmds Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 093/136] ionic: VF initial random MAC address if no assigned mac Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 094/136] net: stmmac: work around sporadic tx issue on link-up Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 095/136] btrfs: fix silent failure when deleting root reference Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 096/136] btrfs: replace: drop assert for suspended replace Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 097/136] btrfs: add info when mount fails due to stale replace target Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 098/136] btrfs: check if root is readonly while setting security xattr Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 099/136] btrfs: fix possible memory leak in btrfs_get_dev_args_from_path() Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 100/136] perf/x86/lbr: Enable the branch type for the Arch LBR by default Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 101/136] x86/unwind/orc: Unwind ftrace trampolines with correct ORC entry Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 102/136] x86/bugs: Add "unknown" reporting for MMIO Stale Data Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 103/136] x86/nospec: Unwreck the RSB stuffing Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 104/136] loop: Check for overflow while configuring loop Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 105/136] writeback: avoid use-after-free after removing device Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 106/136] asm-generic: sections: refactor memory_intersects Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 107/136] mm/damon/dbgfs: avoid duplicate context directory creation Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 108/136] s390/mm: do not trigger write fault when vma does not allow VM_WRITE Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 109/136] bootmem: remove the vmemmap pages from kmemleak in put_page_bootmem Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 110/136] s390: fix double free of GS and RI CBs on fork() failure Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 111/136] fbdev: fbcon: Properly revert changes when vc_resize() failed Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 112/136] Revert "memcg: cleanup racy sum avoidance code" Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 113/136] ACPI: processor: Remove freq Qos request for all CPUs Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 114/136] nouveau: explicitly wait on the fence in nouveau_bo_move_m2mf Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 115/136] smb3: missing inode locks in punch hole Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 116/136] xen/privcmd: fix error exit of privcmd_ioctl_dm_op() Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 117/136] riscv: traps: add missing prototype Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 118/136] io_uring: fix issue with io_write() not always undoing sb_start_write() Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 119/136] Revert "usbnet: smsc95xx: Fix deadlock on runtime resume" Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 120/136] Revert "usbnet: smsc95xx: Forward PHY interrupts to PHY driver to avoid polling" Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 121/136] mm/hugetlb: fix hugetlb not supporting softdirty tracking Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 122/136] Revert "md-raid: destroy the bitmap after destroying the thread" Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 123/136] md: call __md_stop_writes in md_stop Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 124/136] mptcp: Fix crash due to tcp_tsorted_anchor was initialized before release skb Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 125/136] arm64: Fix match_list for erratum 1286807 on Arm Cortex-A76 Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 126/136] binder_alloc: add missing mmap_lock calls when using the VMA Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 127/136] x86/nospec: Fix i386 RSB stuffing Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 128/136] Documentation/ABI: Mention retbleed vulnerability info file for sysfs Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 129/136] blk-mq: fix io hung due to missing commit_rqs Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 130/136] perf python: Fix build when PYTHON_CONFIG is user supplied Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 131/136] perf/x86/intel/uncore: Fix broken read_counter() for SNB IMC PMU Greg Kroah-Hartman
2022-08-29 10:59 ` [PATCH 5.15 132/136] perf/x86/intel/ds: Fix precise store latency handling Greg Kroah-Hartman
2022-08-29 11:00 ` [PATCH 5.15 133/136] perf stat: Clear evsel->reset_group for each stat run Greg Kroah-Hartman
2022-08-29 11:00 ` [PATCH 5.15 134/136] scsi: ufs: core: Enable link lost interrupt Greg Kroah-Hartman
2022-08-29 11:00 ` [PATCH 5.15 135/136] scsi: storvsc: Remove WQ_MEM_RECLAIM from storvsc_error_wq Greg Kroah-Hartman
2022-08-29 11:00 ` [PATCH 5.15 136/136] bpf: Dont use tnum_range on array range checking for poke descriptors Greg Kroah-Hartman
2022-08-29 17:42 ` [PATCH 5.15 000/136] 5.15.64-rc1 review Florian Fainelli
2022-08-29 20:11 ` Sudip Mukherjee
2022-09-01  9:46   ` Greg Kroah-Hartman
2022-09-01 10:22     ` Sudip Mukherjee
2022-09-01 10:30       ` Greg Kroah-Hartman
2022-09-01 10:56         ` Sudip Mukherjee
2022-09-01 12:05           ` Greg Kroah-Hartman
2022-09-01 18:33             ` Greg Kroah-Hartman
2022-08-29 22:16 ` Shuah Khan
2022-08-30  0:48 ` Guenter Roeck
2022-08-30  2:15 ` Daniel Díaz
2022-08-30  4:14 ` Bagas Sanjaya
2022-08-30  6:28 ` Ron Economos
2022-08-30 10:32 ` Jon Hunter
2022-09-01  9:50   ` Greg Kroah-Hartman
2022-08-30 10:40 ` Sudip Mukherjee (Codethink)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220829105807.300791309@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pablo@netfilter.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).