linux/drivers/tty/serial/8250
Gustavo A. R. Silva 02042a4cf4 serial: 8250_pci: Replace zero-length array with flexible-array member
The current codebase makes use of the zero-length array language
extension to the C90 standard, but the preferred mechanism to declare
variable-length types such as these ones is a flexible array member[1][2],
introduced in C99:

struct foo {
        int stuff;
        struct boo array[];
};

By making use of the mechanism above, we will get a compiler warning
in case the flexible array does not occur last in the structure, which
will help us prevent some kind of undefined behavior bugs from being
inadvertently introduced[3] to the codebase from now on.

Also, notice that, dynamic memory allocations won't be affected by
this change:

"Flexible array members have incomplete type, and so the sizeof operator
may not be applied. As a quirk of the original implementation of
zero-length arrays, sizeof evaluates to zero."[1]

This issue was found with the help of Coccinelle.

[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://github.com/KSPP/linux/issues/21
[3] commit 7649773293 ("cxgb3/l2t: Fix undefined behaviour")

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Link: https://lore.kernel.org/r/20200213004426.GA7886@embeddedor.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-02-13 12:00:23 -08:00
..
8250_accent.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_acorn.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_aspeed_vuart.c tty/serial: Migrate aspeed_vuart to use has_sysrq 2019-12-17 15:16:17 +01:00
8250_bcm2835aux.c serial: 8250_early: Add earlycon for BCM2835 aux uart 2020-02-10 12:34:44 -08:00
8250_boca.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_core.c tty/serial: Migrate 8250_fsl to use has_sysrq 2019-12-18 15:04:42 +01:00
8250_dma.c serial: 8250: factor out serial8250_{set,clear}_THRI() helpers 2019-06-18 09:36:55 +02:00
8250_dw.c serial: 8250_dw: Avoid double error messaging when IRQ absent 2019-11-04 17:45:31 +01:00
8250_dwlib.c serial: 8250_dw: split Synopsys DesignWare 8250 common functions 2019-09-04 12:43:52 +02:00
8250_dwlib.h serial: 8250_dw: split Synopsys DesignWare 8250 common functions 2019-09-04 12:43:52 +02:00
8250_early.c serial: 8250_early: Setup divider when uartclk is passed 2018-04-25 14:56:12 +02:00
8250_em.c headers: separate linux/mod_devicetable.h from linux/platform_device.h 2018-07-07 17:52:26 +02:00
8250_exar_st16c554.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_exar.c tty/serial: 8250_exar: Replace zero-length array with flexible-array member 2020-02-12 12:07:12 -08:00
8250_fintek.c serial: 8250_fintek: Make fintek_8250_set_termios static 2019-03-28 00:29:03 +09:00
8250_fourport.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_fsl.c tty/serial: Migrate 8250_fsl to use has_sysrq 2019-12-18 15:04:42 +01:00
8250_gsc.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
8250_hp300.c tty: add SPDX identifiers to all remaining files in drivers/tty/ 2017-11-08 13:08:12 +01:00
8250_hub6.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_ingenic.c Serial: Ingenic: Add support for the X1000. 2019-01-30 09:31:30 +01:00
8250_ioc3.c Fix up remaining devm_ioremap_nocache() in SGI IOC3 8250 UART driver 2020-02-08 14:19:39 -08:00
8250_lpc18xx.c tty: Remove dev_err() usage after platform_get_irq() 2019-09-04 12:43:49 +02:00
8250_lpss.c serial: 8250_lpss: Switch over to MSI interrupts 2019-10-04 14:58:05 +02:00
8250_men_mcb.c drivers: mcb: use symbol namespaces 2019-11-03 19:54:53 +01:00
8250_mid.c tty: serial: Remove redundant license text 2017-11-08 13:08:12 +01:00
8250_mtk.c serial: 8250-mtk: Use platform_get_irq_optional() for optional irq 2019-11-04 17:45:32 +01:00
8250_of.c serial: 8250_tegra: Create Tegra specific 8250 driver 2020-02-10 12:34:44 -08:00
8250_omap.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
8250_pci.c serial: 8250_pci: Replace zero-length array with flexible-array member 2020-02-13 12:00:23 -08:00
8250_pnp.c serial: 8250_pnp: Move to struct dev_pm_ops 2019-09-04 12:43:46 +02:00
8250_port.c TTY/Serial driver updates for 5.6-rc1 2020-01-29 10:13:27 -08:00
8250_pxa.c serial: 8250_pxa: honor the port number from devicetree 2019-02-26 12:30:44 +01:00
8250_tegra.c serial: 8250_tegra: Create Tegra specific 8250 driver 2020-02-10 12:34:44 -08:00
8250_uniphier.c tty: Remove dev_err() usage after platform_get_irq() 2019-09-04 12:43:49 +02:00
8250.h tty/serial/8250: use mctrl_gpio helpers 2019-06-21 10:18:43 +02:00
Kconfig serial: 8250_tegra: Create Tegra specific 8250 driver 2020-02-10 12:34:44 -08:00
Makefile serial: 8250_tegra: Create Tegra specific 8250 driver 2020-02-10 12:34:44 -08:00
serial_cs.c drivers/tty: add error handling for pcmcia_loop_config 2018-06-28 21:23:44 +09:00