Message ID | 20240828071004.1245213-5-ruanjinjie@huawei.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: Use kmemdup_array() instead of kmemdup() for multiple allocation | expand |
On Wed, Aug 28, 2024 at 03:10:03PM +0800, Jinjie Ruan wrote: > Let the kmemdup_array() take care about multiplication and possible > overflows. No patch for net/ipv6/netfilter/ip6_tables.c? We have yet another code copy & paste there. BTW, could you collapse all these patches for netfilter in one single patch? Thanks. > Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> > --- > net/ipv4/netfilter/ip_tables.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > 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; > -- > 2.34.1 > >
On Wed, Aug 28, 2024 at 10:42:12AM +0200, Pablo Neira Ayuso wrote: > On Wed, Aug 28, 2024 at 03:10:03PM +0800, Jinjie Ruan wrote: > > Let the kmemdup_array() take care about multiplication and possible > > overflows. > > No patch for net/ipv6/netfilter/ip6_tables.c? > > We have yet another code copy & paste there. > > BTW, could you collapse all these patches for netfilter in one single > patch? BTW, someone else seems to have made the same patch: https://patchwork.ozlabs.org/project/netfilter-devel/patch/20240826034136.1791485-1-yanzhen@vivo.com/ it is already sitting in the queue.
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;
Let the kmemdup_array() take care about multiplication and possible overflows. Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com> --- net/ipv4/netfilter/ip_tables.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)