From: Gustavo A. R. Silva <hidden> Date: 2019-01-31 00:39:05
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[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <redacted>
---
drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
From: Jakub Kicinski <hidden> Date: 2019-01-31 00:52:34
On Wed, 30 Jan 2019 18:38:59 -0600, Gustavo A. R. Silva wrote:
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[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <redacted>
From: Gustavo A. R. Silva <hidden> Date: 2019-01-31 00:57:56
On 1/30/19 6:52 PM, Jakub Kicinski wrote:
On Wed, 30 Jan 2019 18:38:59 -0600, Gustavo A. R. Silva wrote:
quoted
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[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <redacted>
From: Joe Perches <joe@perches.com> Date: 2019-01-31 17:11:19
On Wed, 2019-01-30 at 18:38 -0600, Gustavo A. R. Silva wrote:
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[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Might be useful to augment the script to include cases
where the computed size is saved to a temporary and
that temporary is used ala:
https://patchwork.kernel.org/patch/10782453/
On Sat, 2019-01-26 at 20:42 +0800, YueHaibing wrote:
Use kmemdup rather than duplicating its implementation
From: Gustavo A. R. Silva <hidden> Date: 2019-01-31 17:15:11
Hi Joe,
On 1/31/19 11:11 AM, Joe Perches wrote:
On Wed, 2019-01-30 at 18:38 -0600, Gustavo A. R. Silva wrote:
quoted
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[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Might be useful to augment the script to include cases
where the computed size is saved to a temporary and
that temporary is used ala:
From: David Miller <davem@davemloft.net> Date: 2019-02-01 23:23:00
From: "Gustavo A. R. Silva" <redacted>
Date: Wed, 30 Jan 2019 18:38:59 -0600
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[];
};
instance = kzalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <redacted>