diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-06-07 13:53:14 -0500 |
---|---|---|
committer | Bjorn Andersson <bjorn.andersson@linaro.org> | 2019-06-29 12:04:07 -0700 |
commit | 77e5a44879c95ae0d453c71f132e8aa7b7883916 (patch) | |
tree | f1e2c0fa7ba037691c87b03c03aa0688c0564eff /drivers/remoteproc | |
parent | b1a17513a2d60f9e933016bed04d0eeb8651a915 (diff) | |
download | lwn-77e5a44879c95ae0d453c71f132e8aa7b7883916.tar.gz lwn-77e5a44879c95ae0d453c71f132e8aa7b7883916.zip |
remoteproc: 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 resource_table {
...
u32 offset[0];
} __packed;
Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.
So, replace the following form:
table->num * sizeof(table->offset[0]) + sizeof(struct resource_table)
with:
struct_size(table, offset, table->num)
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/remoteproc')
-rw-r--r-- | drivers/remoteproc/remoteproc_elf_loader.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c index b17d72ec8603..a37d5cfc46e0 100644 --- a/drivers/remoteproc/remoteproc_elf_loader.c +++ b/drivers/remoteproc/remoteproc_elf_loader.c @@ -255,8 +255,7 @@ find_table(struct device *dev, struct elf32_hdr *ehdr, size_t fw_size) } /* make sure the offsets array isn't truncated */ - if (table->num * sizeof(table->offset[0]) + - sizeof(struct resource_table) > size) { + if (struct_size(table, offset, table->num) > size) { dev_err(dev, "resource table incomplete\n"); return NULL; } |