1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- From 0cf83903aad03dc7f444a47990def48c4a9d3276 Mon Sep 17 00:00:00 2001
- From: "Gustavo A. R. Silva" <[email protected]>
- Date: Wed, 3 Apr 2019 11:46:11 -0500
- Subject: [PATCH] brcmfmac: Use struct_size() in 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 = kzalloc(size, 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)
- Notice that, in this case, variable reqsz is not necessary,
- hence it is removed.
- This code was detected with the help of Coccinelle.
- Signed-off-by: Gustavo A. R. Silva <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- ---
- drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
- @@ -711,7 +711,6 @@ brcmf_fw_alloc_request(u32 chip, u32 chi
- size_t mp_path_len;
- u32 i, j;
- char end = '\0';
- - size_t reqsz;
-
- for (i = 0; i < table_size; i++) {
- if (mapping_table[i].chipid == chip &&
- @@ -726,8 +725,7 @@ brcmf_fw_alloc_request(u32 chip, u32 chi
- return NULL;
- }
-
- - reqsz = sizeof(*fwreq) + n_fwnames * sizeof(struct brcmf_fw_item);
- - fwreq = kzalloc(reqsz, GFP_KERNEL);
- + fwreq = kzalloc(struct_size(fwreq, items, n_fwnames), GFP_KERNEL);
- if (!fwreq)
- return NULL;
-
|