Patch "RDMA/irdma: Replace one-element array with flexible-array member" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    RDMA/irdma: Replace one-element array with flexible-array member

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rdma-irdma-replace-one-element-array-with-flexible-a.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c803961c79342476a921b5cf42a349f6257ac842
Author: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>
Date:   Wed Aug 2 08:46:26 2023 -0600

    RDMA/irdma: Replace one-element array with flexible-array member
    
    [ Upstream commit 38313c6d2a02c28162e06753b01bd885caf9386d ]
    
    One-element and zero-length arrays are deprecated. So, replace
    one-element array in struct irdma_qvlist_info with flexible-array
    member.
    
    A patch for this was sent a while ago[1]. However, it seems that, at
    the time, the changes were partially folded[2][3], and the actual
    flexible-array transformation was omitted. This patch fixes that.
    
    The only binary difference seen before/after changes is shown below:
    
    |  drivers/infiniband/hw/irdma/hw.o
    | @@ -868,7 +868,7 @@
    | drivers/infiniband/hw/irdma/hw.c:484 (discriminator 2)
    |       size += struct_size(iw_qvlist, qv_info, rf->msix_count);
    |      55b:      imul   $0x45c,%rdi,%rdi
    |-     562:      add    $0x10,%rdi
    |+     562:      add    $0x4,%rdi
    
    which is, of course, expected as it reflects the mistake made
    while folding the patch I've mentioned above.
    
    Worth mentioning is the fact that with this change we save 12 bytes
    of memory, as can be inferred from the diff snapshot above. Notice
    that:
    
    $ pahole -C rdma_qv_info idrivers/infiniband/hw/irdma/hw.o
    struct irdma_qv_info {
            u32                        v_idx;                /*     0     4 */
            u16                        ceq_idx;              /*     4     2 */
            u16                        aeq_idx;              /*     6     2 */
            u8                         itr_idx;              /*     8     1 */
    
            /* size: 12, cachelines: 1, members: 4 */
            /* padding: 3 */
            /* last cacheline: 12 bytes */
    };
    
    Link: https://lore.kernel.org/linux-hardening/20210525230038.GA175516@embeddedor/ [1]
    Link: https://lore.kernel.org/linux-hardening/bf46b428deef4e9e89b0ea1704b1f0e5@xxxxxxxxx/ [2]
    Link: https://lore.kernel.org/linux-rdma/20210520143809.819-1-shiraz.saleem@xxxxxxxxx/T/#u [3]
    Fixes: 44d9e52977a1 ("RDMA/irdma: Implement device initialization definitions")
    Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/ZMpsQrZadBaJGkt4@work
    Signed-off-by: Leon Romanovsky <leon@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/hw/irdma/main.h b/drivers/infiniband/hw/irdma/main.h
index f2e2bc50c6f7b..bd13cc38e5ae1 100644
--- a/drivers/infiniband/hw/irdma/main.h
+++ b/drivers/infiniband/hw/irdma/main.h
@@ -237,7 +237,7 @@ struct irdma_qv_info {
 
 struct irdma_qvlist_info {
 	u32 num_vectors;
-	struct irdma_qv_info qv_info[1];
+	struct irdma_qv_info qv_info[];
 };
 
 struct irdma_gen_ops {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux