* [PATCH net-next v1] netfilter: Use kmemdup_array instead of kmemdup for multiple allocation
@ 2024-08-26 3:41 Yan Zhen
2024-08-26 7:06 ` Florian Westphal
2024-09-03 8:44 ` Pablo Neira Ayuso
0 siblings, 2 replies; 3+ messages in thread
From: Yan Zhen @ 2024-08-26 3:41 UTC (permalink / raw)
To: pablo, kadlec, roopa, razor, davem, edumazet, kuba, pabeni,
dsahern
Cc: netfilter-devel, coreteam, bridge, netdev, linux-kernel,
opensource.kernel, Yan Zhen
When we are allocating an array, using kmemdup_array() to take care about
multiplication and possible overflows.
Also it makes auditing the code easier.
Signed-off-by: Yan Zhen <yanzhen@vivo.com>
---
net/bridge/netfilter/ebtables.c | 2 +-
net/ipv4/netfilter/arp_tables.c | 2 +-
net/ipv4/netfilter/ip_tables.c | 2 +-
net/ipv6/netfilter/ip6_tables.c | 2 +-
net/netfilter/nf_nat_core.c | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index cbd0e3586c3f..3e67d4aff419 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -1256,7 +1256,7 @@ int ebt_register_table(struct net *net, const struct ebt_table *input_table,
goto free_unlock;
}
- ops = kmemdup(template_ops, sizeof(*ops) * num_ops, GFP_KERNEL);
+ ops = kmemdup_array(template_ops, num_ops, sizeof(*ops), GFP_KERNEL);
if (!ops) {
ret = -ENOMEM;
if (newinfo->nentries)
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
index 14365b20f1c5..4493a785c1ea 100644
--- a/net/ipv4/netfilter/arp_tables.c
+++ b/net/ipv4/netfilter/arp_tables.c
@@ -1547,7 +1547,7 @@ int arpt_register_table(struct net *net,
goto out_free;
}
- ops = kmemdup(template_ops, sizeof(*ops) * num_ops, GFP_KERNEL);
+ ops = kmemdup_array(template_ops, num_ops, sizeof(*ops), GFP_KERNEL);
if (!ops) {
ret = -ENOMEM;
goto out_free;
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index fe89a056eb06..096bfef472b1 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1767,7 +1767,7 @@ int ipt_register_table(struct net *net, const struct xt_table *table,
goto out_free;
}
- ops = kmemdup(template_ops, sizeof(*ops) * num_ops, GFP_KERNEL);
+ ops = kmemdup_array(template_ops, num_ops, sizeof(*ops), GFP_KERNEL);
if (!ops) {
ret = -ENOMEM;
goto out_free;
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
index 131f7bb2110d..7d5602950ae7 100644
--- a/net/ipv6/netfilter/ip6_tables.c
+++ b/net/ipv6/netfilter/ip6_tables.c
@@ -1773,7 +1773,7 @@ int ip6t_register_table(struct net *net, const struct xt_table *table,
goto out_free;
}
- ops = kmemdup(template_ops, sizeof(*ops) * num_ops, GFP_KERNEL);
+ ops = kmemdup_array(template_ops, num_ops, sizeof(*ops), GFP_KERNEL);
if (!ops) {
ret = -ENOMEM;
goto out_free;
diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
index 016c816d91cb..6d8da6dddf99 100644
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
@@ -1104,7 +1104,7 @@ int nf_nat_register_fn(struct net *net, u8 pf, const struct nf_hook_ops *ops,
if (!nat_proto_net->nat_hook_ops) {
WARN_ON(nat_proto_net->users != 0);
- nat_ops = kmemdup(orig_nat_ops, sizeof(*orig_nat_ops) * ops_count, GFP_KERNEL);
+ nat_ops = kmemdup_array(orig_nat_ops, ops_count, sizeof(*orig_nat_ops), GFP_KERNEL);
if (!nat_ops) {
mutex_unlock(&nf_nat_proto_mutex);
return -ENOMEM;
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH net-next v1] netfilter: Use kmemdup_array instead of kmemdup for multiple allocation
2024-08-26 3:41 [PATCH net-next v1] netfilter: Use kmemdup_array instead of kmemdup for multiple allocation Yan Zhen
@ 2024-08-26 7:06 ` Florian Westphal
2024-09-03 8:44 ` Pablo Neira Ayuso
1 sibling, 0 replies; 3+ messages in thread
From: Florian Westphal @ 2024-08-26 7:06 UTC (permalink / raw)
To: Yan Zhen
Cc: pablo, kadlec, roopa, razor, davem, edumazet, kuba, pabeni,
dsahern, netfilter-devel, coreteam, bridge, netdev, linux-kernel,
opensource.kernel
Yan Zhen <yanzhen@vivo.com> wrote:
> When we are allocating an array, using kmemdup_array() to take care about
> multiplication and possible overflows.
>
> Also it makes auditing the code easier.
Reviewed-by: Florian Westphal <fw@strlen.de>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v1] netfilter: Use kmemdup_array instead of kmemdup for multiple allocation
2024-08-26 3:41 [PATCH net-next v1] netfilter: Use kmemdup_array instead of kmemdup for multiple allocation Yan Zhen
2024-08-26 7:06 ` Florian Westphal
@ 2024-09-03 8:44 ` Pablo Neira Ayuso
1 sibling, 0 replies; 3+ messages in thread
From: Pablo Neira Ayuso @ 2024-09-03 8:44 UTC (permalink / raw)
To: Yan Zhen
Cc: kadlec, roopa, razor, davem, edumazet, kuba, pabeni, dsahern,
netfilter-devel, coreteam, bridge, netdev, linux-kernel,
opensource.kernel
On Mon, Aug 26, 2024 at 11:41:36AM +0800, Yan Zhen wrote:
> When we are allocating an array, using kmemdup_array() to take care about
> multiplication and possible overflows.
>
> Also it makes auditing the code easier.
Applied, thanks
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-09-03 8:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-26 3:41 [PATCH net-next v1] netfilter: Use kmemdup_array instead of kmemdup for multiple allocation Yan Zhen
2024-08-26 7:06 ` Florian Westphal
2024-09-03 8:44 ` Pablo Neira Ayuso
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).