linux/drivers/infiniband/sw/rxe
Gustavo A. R. Silva 5b361328ca RDMA: 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")

Link: https://lore.kernel.org/r/20200213010425.GA13068@embeddedor.com
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> # added a few more
2020-02-20 13:33:51 -04:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rxe_av.c RDMA/rxe: Improve loopback marking 2019-02-04 15:57:49 -07:00
rxe_comp.c ibverbs/rxe: Remove variable self-initialization 2019-07-07 09:19:38 -03:00
rxe_cq.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_hdr.h RDMA: Use __packed annotation instead of __attribute__ ((packed)) 2019-03-25 21:14:12 -03:00
rxe_hw_counters.c IB/rxe: Make counters thread safe 2018-12-20 14:09:45 -07:00
rxe_hw_counters.h RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_mr.c IB: Allow calls to ib_umem_get from kernel ULPs 2020-01-16 16:14:28 +02:00
rxe_net.c net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup 2019-12-04 12:27:13 -08:00
rxe_net.h rdma_rxe: Use netlink messages to add/delete links 2019-02-19 20:52:19 -07:00
rxe_opcode.c IB/rxe: add RXE_START_MASK for rxe_opcode IB_OPCODE_RC_SEND_ONLY_INV 2018-04-27 14:20:47 -04:00
rxe_opcode.h
rxe_param.h Introduce maximum WQE size to check limits 2020-01-15 16:27:01 -04:00
rxe_pool.c RDMA: Convert CQ allocations to be under core responsibility 2019-06-11 16:39:49 -04:00
rxe_pool.h RDMA: Handle PD allocations by IB/core 2019-02-08 16:51:04 -07:00
rxe_qp.c RDMA/rxe: Fix configuration of atomic queue pair attributes 2020-02-19 16:56:57 -04:00
rxe_queue.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_queue.h RDMA: Replace zero-length array with flexible-array member 2020-02-20 13:33:51 -04:00
rxe_recv.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_req.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_resp.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_srq.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_sysfs.c rdma_rxe: Use netlink messages to add/delete links 2019-02-19 20:52:19 -07:00
rxe_task.c RDMA/rxe: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:07 -04:00
rxe_task.h IB/rxe: Wait for tasklets to finish before tearing down QP 2016-12-12 16:31:45 -05:00
rxe_verbs.c RDMA/rxe: Increase DMA max_segment_size parameter 2019-10-28 14:52:03 -03:00
rxe_verbs.h RDMA/rxe: Fix error type of mmap_offset 2020-01-03 19:43:51 -04:00
rxe.c RDMA/rxe: Remove useless rxe_init_device_param assignments 2019-10-24 15:20:18 -03:00
rxe.h RDMA: Introduce ib_port_phys_state enum 2019-08-12 10:18:52 -04:00