net: usb: cdc-phonet: use struct_size() in alloc_netdev()
Subsystems (4)
PATCH 1/1 net: usb: cdc-phonet: use struct_size() in alloc_netdev()
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;
void *entry[];
};instance = alloc(sizeof(struct foo) + count * sizeof(void *));
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.
--- drivers/net/usb/cdc-phonet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/usb/cdc-phonet.c +2 -2
@@ -361,8 +361,8 @@ static int usbpn_probe(struct usb_interface *intf, const struct usb_device_id *ielse return -EINVAL ; - dev =alloc_netdev (sizeof (*pnd) +sizeof (pnd->urbs[0 ]) * rxq_size, - ifname,NET_NAME_UNKNOWN , usbpn_setup); + dev =alloc_netdev (struct_size (pnd, urbs, rxq_size), ifname, +NET_NAME_UNKNOWN , usbpn_setup);if (!dev)return -ENOMEM ;
From: "Gustavo A. R. Silva" <[email protected]>
Date: Thu, 7 Feb 2019 21:13:13 -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; void *entry[]; };instance =
alloc(sizeof(struct foo) + count * sizeof(void *));
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.