diff options
| author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-01-04 16:16:12 -0500 |
|---|---|---|
| committer | Vinod Koul <vkoul@kernel.org> | 2019-01-07 07:37:58 -0500 |
| commit | d3d70373f6fee9ed41bc4e9f1acdbc80c5b3a684 (patch) | |
| tree | 8520101bcfc79076bae495a95cc292173b6231bd | |
| parent | 95f295f9fe08166307d94b641fba0b0e924d5d31 (diff) | |
dmaengine: tegra-apb: Use struct_size() in devm_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;
void *entry[];
};
instance = devm_kzalloc(dev, sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
instance = devm_kzalloc(dev, struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
| -rw-r--r-- | drivers/dma/tegra20-apb-dma.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c index 659b49bf6fdb..cf462b1abc0b 100644 --- a/drivers/dma/tegra20-apb-dma.c +++ b/drivers/dma/tegra20-apb-dma.c | |||
| @@ -1329,8 +1329,9 @@ static int tegra_dma_probe(struct platform_device *pdev) | |||
| 1329 | return -ENODEV; | 1329 | return -ENODEV; |
| 1330 | } | 1330 | } |
| 1331 | 1331 | ||
| 1332 | tdma = devm_kzalloc(&pdev->dev, sizeof(*tdma) + cdata->nr_channels * | 1332 | tdma = devm_kzalloc(&pdev->dev, |
| 1333 | sizeof(struct tegra_dma_channel), GFP_KERNEL); | 1333 | struct_size(tdma, channels, cdata->nr_channels), |
| 1334 | GFP_KERNEL); | ||
| 1334 | if (!tdma) | 1335 | if (!tdma) |
| 1335 | return -ENOMEM; | 1336 | return -ENOMEM; |
| 1336 | 1337 | ||
