* [PATCH] genirq/devres: Use struct_size() in devm_kzalloc()
@ 2019-04-10 17:09 Gustavo A. R. Silva
2019-04-16 19:58 ` [tip:irq/core] " tip-bot for Gustavo A. R. Silva
0 siblings, 1 reply; 2+ messages in thread
From: Gustavo A. R. Silva @ 2019-04-10 17:09 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-kernel, Gustavo A. R. Silva
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:
struct foo {
int stuff;
struct boo entry[];
};
size = sizeof(struct foo) + count * sizeof(struct boo);
instance = devm_kzalloc(dev, size, GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = devm_kzalloc(dev, struct_size(instance, entry, count), GFP_KERNEL);
Notice that, in this case, variable sz is not necessary, hence it
is removed.
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
kernel/irq/devres.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/kernel/irq/devres.c b/kernel/irq/devres.c
index f808c6a97dcc..f6e5515ee077 100644
--- a/kernel/irq/devres.c
+++ b/kernel/irq/devres.c
@@ -220,9 +220,8 @@ devm_irq_alloc_generic_chip(struct device *dev, const char *name, int num_ct,
irq_flow_handler_t handler)
{
struct irq_chip_generic *gc;
- unsigned long sz = sizeof(*gc) + num_ct * sizeof(struct irq_chip_type);
- gc = devm_kzalloc(dev, sz, GFP_KERNEL);
+ gc = devm_kzalloc(dev, struct_size(gc, chip_types, num_ct), GFP_KERNEL);
if (gc)
irq_init_generic_chip(gc, name, num_ct,
irq_base, reg_base, handler);
--
2.21.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip:irq/core] genirq/devres: Use struct_size() in devm_kzalloc()
2019-04-10 17:09 [PATCH] genirq/devres: Use struct_size() in devm_kzalloc() Gustavo A. R. Silva
@ 2019-04-16 19:58 ` tip-bot for Gustavo A. R. Silva
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Gustavo A. R. Silva @ 2019-04-16 19:58 UTC (permalink / raw)
To: linux-tip-commits; +Cc: tglx, hpa, linux-kernel, gustavo, mingo
Commit-ID: 2d65c42b43e53d61f1fd6b8d0a097451a4cffa24
Gitweb: https://git.kernel.org/tip/2d65c42b43e53d61f1fd6b8d0a097451a4cffa24
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
AuthorDate: Wed, 10 Apr 2019 12:09:14 -0500
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Tue, 16 Apr 2019 21:54:03 +0200
genirq/devres: Use struct_size() in devm_kzalloc()
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:
struct foo {
int stuff;
struct boo entry[];
};
size = sizeof(struct foo) + count * sizeof(struct boo);
instance = devm_kzalloc(dev, size, GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper.
instance = devm_kzalloc(dev, struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20190410170914.GA16161@embeddedor
---
kernel/irq/devres.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/kernel/irq/devres.c b/kernel/irq/devres.c
index f808c6a97dcc..f6e5515ee077 100644
--- a/kernel/irq/devres.c
+++ b/kernel/irq/devres.c
@@ -220,9 +220,8 @@ devm_irq_alloc_generic_chip(struct device *dev, const char *name, int num_ct,
irq_flow_handler_t handler)
{
struct irq_chip_generic *gc;
- unsigned long sz = sizeof(*gc) + num_ct * sizeof(struct irq_chip_type);
- gc = devm_kzalloc(dev, sz, GFP_KERNEL);
+ gc = devm_kzalloc(dev, struct_size(gc, chip_types, num_ct), GFP_KERNEL);
if (gc)
irq_init_generic_chip(gc, name, num_ct,
irq_base, reg_base, handler);
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-04-16 19:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-10 17:09 [PATCH] genirq/devres: Use struct_size() in devm_kzalloc() Gustavo A. R. Silva
2019-04-16 19:58 ` [tip:irq/core] " tip-bot for Gustavo A. R. Silva
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.