mpls_iptunnel: use struct_size() helper
Subsystems (2)
PATCH 1/1 mpls_iptunnel: use struct_size() helper
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 = alloc(sizeof(struct foo) + count * sizeof(struct boo));
Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper:
instance = alloc(struct_size(instance, entry, count));
This code was detected with the help of Coccinelle.
--- net/mpls/mpls_iptunnel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/mpls/mpls_iptunnel.c +2 -2
@@ -183,8 +183,8 @@ static int mpls_build_state(struct nlattr *nla, &n_labels, NULL, extack))return -EINVAL ; - newts =lwtunnel_state_alloc (sizeof (*tun_encap_info) + - n_labels *sizeof (u32)); + newts =lwtunnel_state_alloc (struct_size (tun_encap_info, label, + n_labels));if (!newts)return -ENOMEM ;
Signature · 1 line
2.20.1
From: "Gustavo A. R. Silva" <[email protected]>
Date: Thu, 7 Feb 2019 19:10:52 -0600
Quoted 11 lines
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 =
alloc(sizeof(struct foo) + count * sizeof(struct boo));
Quoted 8 lines
Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
alloc(struct_size(instance, entry, count));This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
Applied.