serial: 8250_exar: Use struct_size() helper
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Sun, 21 Jul 2019 15:01:35 +0000 (18:01 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Sep 2019 10:43:44 +0000 (12:43 +0200)
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.

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20190721150135.82065-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_exar.c

index 03b347a..8d60e54 100644 (file)
@@ -478,9 +478,7 @@ exar_pci_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)
 
        nr_ports = board->num_ports ? board->num_ports : pcidev->device & 0x0f;
 
-       priv = devm_kzalloc(&pcidev->dev, sizeof(*priv) +
-                           sizeof(unsigned int) * nr_ports,
-                           GFP_KERNEL);
+       priv = devm_kzalloc(&pcidev->dev, struct_size(priv, line, nr_ports), GFP_KERNEL);
        if (!priv)
                return -ENOMEM;